Advertisement
Guest User

auto hack bitburner

a guest
Jun 27th, 2023
308
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JavaScript 6.73 KB | Source Code | 0 0
  1. async function main(ns) {
  2.   let targetList = [];
  3.   let hostList = [];
  4.   let latest = [["-", "-"], ["-", "-"], ["-", "-"]];
  5.   let manager = false;
  6.   let temp;
  7.  
  8.   const files = ["weak.script", "grow.script", "hack.script"];
  9.   const pServers = "yes"; // Set to "yes" or "no" depending on whether you have purchased servers
  10.  
  11.   function arraySort(arr) {
  12.     arr.sort(function (a, b) {
  13.       return ns.getServerRequiredHackingLevel(a) - ns.getServerRequiredHackingLevel(b);
  14.     });
  15.   }
  16.  
  17.   function logBalance(server) {
  18.     let money = ns.getServerMoneyAvailable(server);
  19.     let maxMoney = ns.getServerMaxMoney(server);
  20.     return `$${money}/${maxMoney}`;
  21.   }
  22.  
  23.   function scanExes() {
  24.     for (let i = 0; i <= 2; i++) {
  25.       if (!ns.fileExists(files[i], "home")) {
  26.         ns.scp(files[i], "home");
  27.       }
  28.     }
  29.   }
  30.  
  31.   function log() {
  32.     ns.clearLog();
  33.     ns.print(
  34.       "╔═══╦════════════════════╦═══════════════════╗\n" +
  35.       "║ # ║ Target             ║ Balance           ║\n" +
  36.       "╠═══╬════════════════════╬═══════════════════╣"
  37.     );
  38.  
  39.     for (let i = 0; i <= targetList.length - 1; i++) {
  40.       ns.print(
  41.         "║ " +
  42.         String(i).padStart(2) +
  43.         " ║ " +
  44.         targetList[i] +
  45.         hostList[i].padStart(21) +
  46.         " ║ " +
  47.         logBalance(targetList[i]) +
  48.         " ║"
  49.       );
  50.     }
  51.  
  52.     ns.print("╚═══╩════════════════════╩═══════════════════╝");
  53.   }
  54.  
  55.   async function control() {
  56.     while (true) {
  57.       for (let i = 0; i <= 2; i++) {
  58.         if (latest[i][0] !== "-") {
  59.           latest[i][0] = "-";
  60.           latest[i][1] = "-";
  61.         }
  62.       }
  63.  
  64.       latest[0][0] = await ns.exec(files[0], "home", 1, "weak.script", hostList[0]);
  65.       latest[1][0] = await ns.exec(files[1], "home", 1, "grow.script", hostList[0]);
  66.       latest[2][0] = await ns.exec(files[2], "home", 1, "hack.script", targetList[0]);
  67.       latest[0][1] = hostList[0];
  68.       latest[1][1] = hostList[0];
  69.       latest[2][1] = targetList[0];
  70.       targetList.shift();
  71.       hostList.shift();
  72.  
  73.       if (manager) {
  74.         temp = ns.hackAnalyzeThreads(targetList[0]);
  75.         for (let i = 0; i <= temp.length - 1; i++) {
  76.           if (temp[i][1] === ns.getHostname()) {
  77.             temp.splice(i, 1);
  78.             i--;
  79.           }
  80.         }
  81.         arraySort(temp);
  82.         for (let i = 0; i <= temp.length - 1; i++) {
  83.           hostList.push(temp[i][1]);
  84.           targetList.push(temp[i][0]);
  85.         }
  86.         if (targetList.length > 25) {
  87.           targetList = targetList.slice(0, 25);
  88.         }
  89.         if (hostList.length > 25) {
  90.           hostList = hostList.slice(0, 25);
  91.         }
  92.         log();
  93.       }
  94.  
  95.       await ns.sleep(5000);
  96.     }
  97.   }
  98.  
  99.   function mainMenu() {
  100.     let exitMenu = false;
  101.  
  102.     while (!exitMenu) {
  103.       let menuChoice = ns.prompt(
  104.         "Welcome to the hacking script!\n" +
  105.         "Please enter a number to make a selection:\n" +
  106.         "1. Configure target servers\n" +
  107.         "2. Configure manager mode\n" +
  108.         "3. Start hacking\n" +
  109.         "4. Exit"
  110.       );
  111.  
  112.       switch (menuChoice) {
  113.         case "1":
  114.           configureTargets();
  115.           break;
  116.         case "2":
  117.           configureManager();
  118.           break;
  119.         case "3":
  120.           control();
  121.           break;
  122.         case "4":
  123.           exitMenu = true;
  124.           break;
  125.         default:
  126.           ns.tprint("Invalid choice. Please try again.");
  127.           break;
  128.       }
  129.     }
  130.   }
  131.  
  132.   function configureTargets() {
  133.     let exitMenu = false;
  134.  
  135.     while (!exitMenu) {
  136.       let menuChoice = ns.prompt(
  137.         "Configure target servers:\n" +
  138.         "Please enter a number to make a selection:\n" +
  139.         "1. Add target\n" +
  140.         "2. Remove target\n" +
  141.         "3. Clear all targets\n" +
  142.         "4. View current targets\n" +
  143.         "5. Go back"
  144.       );
  145.  
  146.       switch (menuChoice) {
  147.         case "1":
  148.           addTarget();
  149.           break;
  150.         case "2":
  151.           removeTarget();
  152.           break;
  153.         case "3":
  154.           clearTargets();
  155.           break;
  156.         case "4":
  157.           viewTargets();
  158.           break;
  159.         case "5":
  160.           exitMenu = true;
  161.           break;
  162.         default:
  163.           ns.tprint("Invalid choice. Please try again.");
  164.           break;
  165.       }
  166.     }
  167.   }
  168.  
  169.   function configureManager() {
  170.     let exitMenu = false;
  171.  
  172.     while (!exitMenu) {
  173.       let menuChoice = ns.prompt(
  174.         "Configure manager mode:\n" +
  175.         "Please enter a number to make a selection:\n" +
  176.         "1. Enable manager mode\n" +
  177.         "2. Disable manager mode\n" +
  178.         "3. Go back"
  179.       );
  180.  
  181.       switch (menuChoice) {
  182.         case "1":
  183.           manager = true;
  184.           ns.tprint("Manager mode enabled.");
  185.           break;
  186.         case "2":
  187.           manager = false;
  188.           ns.tprint("Manager mode disabled.");
  189.           break;
  190.         case "3":
  191.           exitMenu = true;
  192.           break;
  193.         default:
  194.           ns.tprint("Invalid choice. Please try again.");
  195.           break;
  196.       }
  197.     }
  198.   }
  199.  
  200.   function addTarget() {
  201.     let target = ns.prompt("Enter the target server to add:");
  202.     let exists = false;
  203.  
  204.     for (let i = 0; i <= targetList.length - 1; i++) {
  205.       if (targetList[i] === target) {
  206.         exists = true;
  207.         break;
  208.       }
  209.     }
  210.  
  211.     if (!exists) {
  212.       targetList.push(target);
  213.       hostList.push(ns.scrackIP(target));
  214.       ns.tprint(`Added target: ${target}`);
  215.     } else {
  216.       ns.tprint(`Target ${target} already exists.`);
  217.     }
  218.   }
  219.  
  220.   function removeTarget() {
  221.     let target = ns.prompt("Enter the target server to remove:");
  222.     let index = -1;
  223.  
  224.     for (let i = 0; i <= targetList.length - 1; i++) {
  225.       if (targetList[i] === target) {
  226.         index = i;
  227.         break;
  228.       }
  229.     }
  230.  
  231.     if (index !== -1) {
  232.       targetList.splice(index, 1);
  233.       hostList.splice(index, 1);
  234.       ns.tprint(`Removed target: ${target}`);
  235.     } else {
  236.       ns.tprint(`Target ${target} does not exist.`);
  237.     }
  238.   }
  239.  
  240.   function clearTargets() {
  241.     targetList = [];
  242.     hostList = [];
  243.     ns.tprint("Cleared all targets.");
  244.   }
  245.  
  246.   function viewTargets() {
  247.     if (targetList.length === 0) {
  248.       ns.tprint("No targets configured.");
  249.     } else {
  250.       ns.tprint("Current targets:");
  251.  
  252.       for (let i = 0; i <= targetList.length - 1; i++) {
  253.         ns.tprint(`${i}. ${targetList[i]} (${hostList[i]})`);
  254.       }
  255.     }
  256.   }
  257.  
  258.   mainMenu();
  259. }
  260.  
  261. export { main };
  262.  
Tags: Bitburner
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement