Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- async function main(ns) {
- let targetList = [];
- let hostList = [];
- let latest = [["-", "-"], ["-", "-"], ["-", "-"]];
- let manager = false;
- let temp;
- const files = ["weak.script", "grow.script", "hack.script"];
- const pServers = "yes"; // Set to "yes" or "no" depending on whether you have purchased servers
- function arraySort(arr) {
- arr.sort(function (a, b) {
- return ns.getServerRequiredHackingLevel(a) - ns.getServerRequiredHackingLevel(b);
- });
- }
- function logBalance(server) {
- let money = ns.getServerMoneyAvailable(server);
- let maxMoney = ns.getServerMaxMoney(server);
- return `$${money}/${maxMoney}`;
- }
- function scanExes() {
- for (let i = 0; i <= 2; i++) {
- if (!ns.fileExists(files[i], "home")) {
- ns.scp(files[i], "home");
- }
- }
- }
- function log() {
- ns.clearLog();
- ns.print(
- "╔═══╦════════════════════╦═══════════════════╗\n" +
- "║ # ║ Target ║ Balance ║\n" +
- "╠═══╬════════════════════╬═══════════════════╣"
- );
- for (let i = 0; i <= targetList.length - 1; i++) {
- ns.print(
- "║ " +
- String(i).padStart(2) +
- " ║ " +
- targetList[i] +
- hostList[i].padStart(21) +
- " ║ " +
- logBalance(targetList[i]) +
- " ║"
- );
- }
- ns.print("╚═══╩════════════════════╩═══════════════════╝");
- }
- async function control() {
- while (true) {
- for (let i = 0; i <= 2; i++) {
- if (latest[i][0] !== "-") {
- latest[i][0] = "-";
- latest[i][1] = "-";
- }
- }
- latest[0][0] = await ns.exec(files[0], "home", 1, "weak.script", hostList[0]);
- latest[1][0] = await ns.exec(files[1], "home", 1, "grow.script", hostList[0]);
- latest[2][0] = await ns.exec(files[2], "home", 1, "hack.script", targetList[0]);
- latest[0][1] = hostList[0];
- latest[1][1] = hostList[0];
- latest[2][1] = targetList[0];
- targetList.shift();
- hostList.shift();
- if (manager) {
- temp = ns.hackAnalyzeThreads(targetList[0]);
- for (let i = 0; i <= temp.length - 1; i++) {
- if (temp[i][1] === ns.getHostname()) {
- temp.splice(i, 1);
- i--;
- }
- }
- arraySort(temp);
- for (let i = 0; i <= temp.length - 1; i++) {
- hostList.push(temp[i][1]);
- targetList.push(temp[i][0]);
- }
- if (targetList.length > 25) {
- targetList = targetList.slice(0, 25);
- }
- if (hostList.length > 25) {
- hostList = hostList.slice(0, 25);
- }
- log();
- }
- await ns.sleep(5000);
- }
- }
- function mainMenu() {
- let exitMenu = false;
- while (!exitMenu) {
- let menuChoice = ns.prompt(
- "Welcome to the hacking script!\n" +
- "Please enter a number to make a selection:\n" +
- "1. Configure target servers\n" +
- "2. Configure manager mode\n" +
- "3. Start hacking\n" +
- "4. Exit"
- );
- switch (menuChoice) {
- case "1":
- configureTargets();
- break;
- case "2":
- configureManager();
- break;
- case "3":
- control();
- break;
- case "4":
- exitMenu = true;
- break;
- default:
- ns.tprint("Invalid choice. Please try again.");
- break;
- }
- }
- }
- function configureTargets() {
- let exitMenu = false;
- while (!exitMenu) {
- let menuChoice = ns.prompt(
- "Configure target servers:\n" +
- "Please enter a number to make a selection:\n" +
- "1. Add target\n" +
- "2. Remove target\n" +
- "3. Clear all targets\n" +
- "4. View current targets\n" +
- "5. Go back"
- );
- switch (menuChoice) {
- case "1":
- addTarget();
- break;
- case "2":
- removeTarget();
- break;
- case "3":
- clearTargets();
- break;
- case "4":
- viewTargets();
- break;
- case "5":
- exitMenu = true;
- break;
- default:
- ns.tprint("Invalid choice. Please try again.");
- break;
- }
- }
- }
- function configureManager() {
- let exitMenu = false;
- while (!exitMenu) {
- let menuChoice = ns.prompt(
- "Configure manager mode:\n" +
- "Please enter a number to make a selection:\n" +
- "1. Enable manager mode\n" +
- "2. Disable manager mode\n" +
- "3. Go back"
- );
- switch (menuChoice) {
- case "1":
- manager = true;
- ns.tprint("Manager mode enabled.");
- break;
- case "2":
- manager = false;
- ns.tprint("Manager mode disabled.");
- break;
- case "3":
- exitMenu = true;
- break;
- default:
- ns.tprint("Invalid choice. Please try again.");
- break;
- }
- }
- }
- function addTarget() {
- let target = ns.prompt("Enter the target server to add:");
- let exists = false;
- for (let i = 0; i <= targetList.length - 1; i++) {
- if (targetList[i] === target) {
- exists = true;
- break;
- }
- }
- if (!exists) {
- targetList.push(target);
- hostList.push(ns.scrackIP(target));
- ns.tprint(`Added target: ${target}`);
- } else {
- ns.tprint(`Target ${target} already exists.`);
- }
- }
- function removeTarget() {
- let target = ns.prompt("Enter the target server to remove:");
- let index = -1;
- for (let i = 0; i <= targetList.length - 1; i++) {
- if (targetList[i] === target) {
- index = i;
- break;
- }
- }
- if (index !== -1) {
- targetList.splice(index, 1);
- hostList.splice(index, 1);
- ns.tprint(`Removed target: ${target}`);
- } else {
- ns.tprint(`Target ${target} does not exist.`);
- }
- }
- function clearTargets() {
- targetList = [];
- hostList = [];
- ns.tprint("Cleared all targets.");
- }
- function viewTargets() {
- if (targetList.length === 0) {
- ns.tprint("No targets configured.");
- } else {
- ns.tprint("Current targets:");
- for (let i = 0; i <= targetList.length - 1; i++) {
- ns.tprint(`${i}. ${targetList[i]} (${hostList[i]})`);
- }
- }
- }
- mainMenu();
- }
- export { main };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement