Przejdź do treści
Bity zamieszek

Bity zamieszek

  • Dom
  • Aktualności
  • Przewodniki
  • Przewodniki wideo
  • Opis zmian
  • Zgłoś nadużycie
  • Przełącz formularz wyszukiwania
Bitburnera

Bitburnera – Advanced Auto Farm Script

Wysłany dnia 12/19/202112/19/2021 Przez Nekotorep 1 Komentarz NA Bitburnera – Advanced Auto Farm Script
  • Tytuł: Bitburnera
  • Data wydania:
  • Wywoływacz:
  • Wydawca:
Informacje o Bitburner są nadal niekompletne. Pomóż nam wypełnić szczegóły gry za pomocą tego formularz kontaktowy.

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

Ogłoszenie

Notatka: Require at least 8.1G on your ‘home’ serwer.

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

nano runner.js

Domyślnie, 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.

Scenariusz

/** @param {Ns} ns **/
Eksportuj funkcja asynchroniczna główna(ns) {
  ns.disablelog('WSZYSTKO');
  ns.enableLog('print');
  var options = ns.flags([
    ['kill', FAŁSZ],
    ['hack', FAŁSZ],
    ['grow', FAŁSZ],
    ['weaken', FAŁSZ],
    ['waitTime', 10],
    ['help', FAŁSZ]
  ]);

  Jeśli (opcje['help']) {
    ns.tail();
    ns.print(`Auto-script, opcje:
    * --zabić: 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
    * --pomoc: show this message
    `);
    powrót;
  }

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

  Jeśli (!opcje['hack']) {
    await ns.write(hack, `
      /** @param {Ns} ns **/
      Eksportuj funkcja asynchroniczna główna(ns) {
          await ns.hack(ns.args[0]);
      }
    `, 'w');
  }
  Jeśli (!opcje['grow']) {
    await ns.write(grow, `
      /** @param {Ns} ns **/
      Eksportuj funkcja asynchroniczna główna(ns) {
          await ns.grow(ns.args[0]);
      }
    `, 'w');
  }
  Jeśli (!opcje['weaken']) {
    await ns.write(weaken, `
      /** @param {Ns} ns **/
      Eksportuj funkcja asynchroniczna główna(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++;
  };
  Jeśli (Ns.fileExists('FTPCrack.exe')) {
    softwares[1] = 1;
    softwaresCount++;
  };
  Jeśli (Ns.fileExists('relaySMTP.exe')) {
    softwares[2] = 1;
    softwaresCount++;
  };
  Jeśli (Ns.fileExists('HTTPWorm.exe')) {
    softwares[3] = 1;
    softwaresCount++;
  };
  Jeśli (Ns.fileExists('SQLInject.exe')) {
    softwares[4] = 1;
    softwaresCount++;
  };
  Jeśli (Ns.fileExists('DeepscanV1.exe')) {
    scanLevel += 2;
  };
  Jeśli (Ns.fileExists('DeepscanV2.exe')) {
    scanLevel += 5;
  };

  ns.print('/---/ SEARCHING \\---\\\n-- Default --\n > ' + serverList.join('\n > ') + '\n>- Scan Limit: L' + [scanLevel + 1] + ' -<');
  chwila (index <= serverCount[depth] - 1 && depth < scanLevel) {
    linked = ns.scan(serverList[checked]);
    checked++;
    Do (let index = 0; index <= linked.length - 1; index++) { target = linked[index]; Jeśli (target != 'home' && !serverList.includes(target)) { serverList.push(target); ns.print('L' + [depth + 2] + ' > ' + target);
        serverCount[depth + 1]++;
      }
    }
    Jeśli (index == serverCount[depth] - 1) {
      index = 0;
      depth++;
      serverCount.push(0);
    } w przeciwnym razie {
      index++;
    };
  }

  ns.print('/-------/ CHECKING \\-------\\');
  Do (let index = 0; index <= serverList.length - 1; index++) { target = serverList[index]; Jeśli (ns.getPurchasedServers().includes(target)) { await ns.scp([hack, grow, weaken], 'home', target); Jeśli (opcje['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); } w przeciwnym razie { Jeśli (softwares[0]) { ns.brutessh(target); }; Jeśli (softwares[1]) { ns.ftpcrack(target); }; Jeśli (softwares[2]) { ns.relaysmtp(target); }; Jeśli (softwares[3]) { ns.httpworm(target); }; Jeśli (softwares[4]) { ns.sqlinject(target); }; Ns.wull(target); await ns.scp([hack, grow, weaken], 'home', target); Jeśli (opcje['kill']) { ns.killall(target); } Jeśli (ns.getServerMoneyAvailable(target) == 0) { ns.print(' >X< NO MONEY ' + target); proxyList.push(target); ns.print(' >>>  PROXY ' + target);
      } w przeciwnym razie {
        notProxyList.push(target);
        ns.print(' >>>  VALID ' + target);
      }
    }
  }

  Jeśli (notProxyList.length > 0) {
    ns.print('/------------/ HACKING \\------------\\');
    chwila (PRAWDA) {
      hackables = [];
      growables = [];
      weakenables = [];
      Do (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); } w przeciwnym razie { hackType = hack; hackables.push(target); } Jeśli ((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 + ' ||||||||||');
        }
      }
      Do (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;
        }
        Jeśli ((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(opcje['waitTime']);
    }
  } w przeciwnym razie {
    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. Ostrzeżenie. Always use more that 1ms or you’ll freeze your game.

To wszystko, co dzisiaj udostępniamy w tym celu Bitburnera przewodnik. Ten przewodnik został pierwotnie stworzony i napisany przez Nekotorep. Na wypadek, gdybyśmy nie zaktualizowali tego przewodnika, możesz znaleźć najnowszą aktualizację, postępując zgodnie z tym połączyć.

Jeśli uważasz, że jakakolwiek treść na tej stronie narusza Twoje prawa, w tym Twoje prawa własności intelektualnej, prosimy o niezwłoczny kontakt za pomocą naszego formularza kontaktowego.
Przewodniki Tagi:Bitburnera

Nawigacja po wpisach

Poprzedni post: Five Nights at Freddy’s: Security Breach – How to Beat the Daycare Puzzle
Następny post: Gotowy lub nie – Podręcznik taktyczny operatora

Komentarz (1) on “Bitburner – Advanced Auto Farm Script”

  1. leofev mówi:
    08/20/2022 Na 8:24 JESTEM

    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.

    Odpowiedź

Zostaw odpowiedź Anuluj odpowiedź

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są zaznaczone *

  • Tytuł: Bitburnera
  • Data wydania:
  • Wywoływacz:
  • Wydawca:
Informacje o Bitburner są nadal niekompletne. Pomóż nam wypełnić szczegóły gry za pomocą tego formularz kontaktowy.

Zastrzeżenie

Wszystkie cytowane treści pochodzą z odpowiednich źródeł. Jeśli uważasz, że wykorzystaliśmy Twoje treści bez pozwolenia, upewnij się, że się z nami skontaktujesz, a my potraktujemy to poważnie.
  • O nas
  • Skontaktuj się z nami
  • Polityka prywatności
  • Warunki usługi

Prawo autorskie © 2025 Bity zamieszek.

Zasilany przez Prasa Książka Aktualności Motyw WordPressa