Ga naar de inhoud
Rel-bits

Rel-bits

  • Thuis
  • Nieuws
  • Gidsen
  • Videogidsen
  • Patch-opmerkingen
  • Misbruik melden
  • Toggle zoekformulier
Bitburner

Bitburner – Advanced Auto Farm Script

Geplaatst op 12/19/202112/19/2021 Deur Nekotorep 1 reactie op Bitburner – Advanced Auto Farm Script
  • Titel: Bitburner
  • Releasedatum:
  • Ontwikkelaar:
  • Uitgever:
Informatie over Bitburner is nog steeds onvolledig. Help ons alstublieft de details van het spel hiermee in te vullen contactformulier.

Inspired by this basic auto farm, automate all servers with improved performances.

Kennisgeving

Opmerking: Require at least 8.1G on your ‘home’ server.

Create a ‘runner.js’ file on your home server, paste the content below on it then run it.

nano runner.js

Standaard, this script will not kill all other services running on each server. You can enforce it by running

run runner.js --kill

This script will use all your personally owned servers. The more you have, the more it’ll be efficient.

Script

/** @param {NS} ns **/
export async function main(ns) {
  ns.disableLog('ALL');
  ns.enableLog('print');
  var options = ns.flags([
    ['kill', vals],
    ['hack', vals],
    ['grow', vals],
    ['weaken', vals],
    ['waitTime', 10],
    ['help', vals]
  ]);

  if (opties['help']) {
    ns.tail();
    ns.print(`Auto-script, opties:
    * --doden: Force kill every other process on every servers
    * --hack some-script.js: Replace hack script with some-script.js one
    * --grow some-script.js: Replace grow script with some-script.js one
    * --weaken some-script.js: Replace weaken script with some-script.js one
    * --waitTime 10: Wait time between two servers in ms, must be higher than 1
    * --hulp: show this message
    `);
    return;
  }

  // Creating scripts
  var hack = options['hack'] || '/temp/hack.js',
    grow = options['grow'] || '/temp/grow.js',
    weaken = options['weaken'] || '/temp/weaken.js';

  if (!opties['hack']) {
    await ns.write(hack, `
      /** @param {NS} ns **/
      export async function main(ns) {
          await ns.hack(ns.args[0]);
      }
    `, 'w');
  }
  if (!opties['grow']) {
    await ns.write(grow, `
      /** @param {NS} ns **/
      export async function main(ns) {
          await ns.grow(ns.args[0]);
      }
    `, 'w');
  }
  if (!opties['weaken']) {
    await ns.write(weaken, `
      /** @param {NS} ns **/
      export async function main(ns) {
          await ns.weaken(ns.args[0]);
      }
    `, 'w');
  }

  // Divs variables declarations
  var serverList = ns.scan('home'),
    serverCount = [serverList.length, 0],
    softwares = [0, 0, 0, 0, 0, 0],
    softwaresCount = 0,
    scanLevel = 2,
    index = 0,
    notProxyList = [],
    proxyList = ['home'],
    hackables = [],
    growables = [],
    weakenables = [],
    linked,
    target,
    proxyTarget,
    depth = 0,
    checked = 0,
    hackType;

  // Checking softwares
  if (ns.fileExists('BruteSSH.exe')) {
    softwares[0] = 1;
    softwaresCount++;
  };
  if (ns.fileExists('FTPCrack.exe')) {
    softwares[1] = 1;
    softwaresCount++;
  };
  if (ns.fileExists('relaySMTP.exe')) {
    softwares[2] = 1;
    softwaresCount++;
  };
  if (ns.fileExists('HTTPWorm.exe')) {
    softwares[3] = 1;
    softwaresCount++;
  };
  if (ns.fileExists('SQLInject.exe')) {
    softwares[4] = 1;
    softwaresCount++;
  };
  if (ns.fileExists('DeepscanV1.exe')) {
    scanLevel += 2;
  };
  if (ns.fileExists('DeepscanV2.exe')) {
    scanLevel += 5;
  };

  ns.print('/---/ SEARCHING \\---\\\n-- Default --\n > ' + serverList.join('\n > ') + '\n>- Scan Limit: L' + [scanLevel + 1] + ' -<');
  terwijl (index <= serverCount[depth] - 1 && depth < scanLevel) {
    linked = ns.scan(serverList[checked]);
    checked++;
    voor (let index = 0; index <= linked.length - 1; index++) { target = linked[index]; if (target != 'home' && !serverList.includes(target)) { serverList.push(target); ns.print('L' + [depth + 2] + ' > ' + target);
        serverCount[depth + 1]++;
      }
    }
    if (index == serverCount[depth] - 1) {
      index = 0;
      depth++;
      serverCount.push(0);
    } else {
      index++;
    };
  }

  ns.print('/-------/ CHECKING \\-------\\');
  voor (let index = 0; index <= serverList.length - 1; index++) { target = serverList[index]; if (ns.getPurchasedServers().includes(target)) { await ns.scp([hack, grow, weaken], 'home', target); if (opties['kill']) { ns.killall(target); } proxyList.push(target); ns.print(' >>>  PROXY ' + target);
    } else if (ns.getServerNumPortsRequired(target) > softwaresCount) {
      ns.print(' >X<  SOFTWARE ' + target);
    } else if (ns.getServerMaxRam(target) < 2) { ns.print(' >X<  NO RAM ' + target);
    } else if (ns.getHackingLevel() < ns.getServerRequiredHackingLevel(target)) { ns.print(' >X< SKILL ' + target); } else { if (softwares[0]) { ns.brutessh(target); }; if (softwares[1]) { ns.ftpcrack(target); }; if (softwares[2]) { ns.relaysmtp(target); }; if (softwares[3]) { ns.httpworm(target); }; if (softwares[4]) { ns.sqlinject(target); }; ns.nuke(target); await ns.scp([hack, grow, weaken], 'home', target); if (opties['kill']) { ns.killall(target); } if (ns.getServerMoneyAvailable(target) == 0) { ns.print(' >X< NO MONEY ' + target); proxyList.push(target); ns.print(' >>>  PROXY ' + target);
      } else {
        notProxyList.push(target);
        ns.print(' >>>  VALID ' + target);
      }
    }
  }

  if (notProxyList.length > 0) {
    ns.print('/------------/ HACKING \\------------\\');
    terwijl (WAAR) {
      hackables = [];
      growables = [];
      weakenables = [];
      voor (target of notProxyList) {
        // Priority for targets: weaken, then grow, then hack
        if (ns.getServerSecurityLevel(target) > ns.getServerMinSecurityLevel(target) + 5) {
          hackType = weaken;
          weakenables.push(target);
        } else if (ns.getServerMoneyAvailable(target) < ns.getServerMaxMoney(target) * 0.80) { hackType = grow; growables.push(target); } else { hackType = hack; hackables.push(target); } if ((ns.getServerMaxRam(target) - ns.getServerUsedRam(target)) > ns.getScriptRam(hackType)) {
          ns.exec(hackType, target, Math.floor((ns.getServerMaxRam(target) - ns.getServerUsedRam(target)) / ns.getScriptRam(hackType)), target);
          ns.print('|||||||||| ' + hackType + ' --> ' + target + ' ||||||||||');
        }
      }
      voor (target of proxyList) {
        // Priority for proxies: hack, then grow, then weaken
        if (hackables.length > 0) {
          proxyTarget = hackables[Math.floor(Math.random() * hackables.length)];
          hackType = hack;
        } else if (growables.length > 0) {
          proxyTarget = growables[Math.floor(Math.random() * growables.length)];
          hackType = grow;
        } else if (weakenables.length > 0) {
          proxyTarget = weakenables[Math.floor(Math.random() * weakenables.length)];
          hackType = weaken;
        }
        if ((ns.getServerMaxRam(target) - ns.getServerUsedRam(target)) > ns.getScriptRam(hackType)) {
          ns.exec(hackType, target, Math.floor((ns.getServerMaxRam(target) - ns.getServerUsedRam(target)) / ns.getScriptRam(hackType)), proxyTarget);
          ns.print('|||||||||| proxy --> ' + target + ' --> ' + hackType + ' --> ' + proxyTarget + ' ||||||||||');
        }
      }
      // Await n ms between each servers to avoid issue with the infinite loop
      await ns.sleep(opties['waitTime']);
    }
  } else {
    ns.print('Error, no server available.');
  }
}

Advanced Usage

You can see all options in-game with

run runner.js --help

You are allowed to use your own hack, grow, weaken script. You can also customize the waiting time between each server. Waarschuwing. Always use more that 1ms or you’ll freeze your game.

Dat is alles wat we vandaag hiervoor delen Bitburner gids. Deze handleiding is oorspronkelijk gemaakt en geschreven door Nekotorep. Voor het geval we er niet in slagen deze handleiding bij te werken, U kunt de laatste update vinden door dit te volgen link.

Als u van mening bent dat de inhoud van deze site uw rechten schendt, inclusief uw intellectuele eigendomsrechten, neem dan direct contact met ons op via ons contactformulier.
Gidsen Labels:Bitburner

Bericht navigatie

Vorig bericht: Vijf nachten bij Freddy's: Beveiligingsbreuk – How to Beat the Daycare Puzzle
Volgende bericht: Klaar of niet – The Operators Tactical Handbook

Reactie (1) op “Bitburner – Advanced Auto Farm Script"

  1. leofev schreef:
    08/20/2022 om 8:24 BEN

    As of release 2.0.1, the last two arguments of the scp function need to be flipped. It won’t throw errors, but you’ll find that it will only be using the home computer to run the grow/weaken/hack cycle.

    Beantwoorden

Geef een reactie Reactie annuleren

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

  • Titel: Bitburner
  • Releasedatum:
  • Ontwikkelaar:
  • Uitgever:
Informatie over Bitburner is nog steeds onvolledig. Help ons alstublieft de details van het spel hiermee in te vullen contactformulier.

Vrijwaring

Alle geciteerde inhoud is afgeleid van hun respectieve bronnen. Als u denkt dat wij uw inhoud zonder toestemming hebben gebruikt, Zorg ervoor dat u ons bereikt en wij zullen het serieus nemen.
  • Over ons
  • Neem contact met ons op
  • Privacybeleid
  • Servicevoorwaarden

Auteursrecht © 2025 Rel-bits.

Aangedreven door PersBoek Nieuws WordPress thema