Advertisement
Guest User

scan.js

a guest
Dec 23rd, 2021
1,913
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. let doc = eval("document"),
  2.     f = ["CSEC", "avmnite-02h", "I.I.I.I", "run4theh111z", "w0r1d_d43m0n"],
  3.     css = `<style id="scanCSS">
  4.         .sc {white-space:pre; color:#ccc; font:14px monospace; line-height: 16px; }
  5.         .sc .s {color:#080;cursor:pointer;text-decoration:underline}
  6.         .sc .f {color:#088}
  7.         .sc .r {color:#6f3}
  8.         .sc .r.f {color:#0ff}
  9.         .sc .r::before {color:#6f3}
  10.         .sc .hack {display:inline-block; font:12px monospace}
  11.         .sc .red {color:red;}
  12.         .sc .green {color:green;}
  13.     </style>`,
  14.     tprint = html => doc.getElementById("terminal").insertAdjacentHTML('beforeend', `<li>${html}</li>`);
  15.  
  16. /** @param {NS} ns **/
  17. export let main = ns => {
  18.     let tIn = doc.getElementById("terminal-input"),
  19.         tEv = tIn[Object.keys(tIn)[1]];
  20.     doc.head.insertAdjacentHTML('beforeend', doc.getElementById("scanCSS") ? "" : css);
  21.     let s = ["home"],
  22.         p = [""],
  23.         r = { home: "home" },
  24.         myHack = ns.getHackingLevel(),
  25.         fName = x => {
  26.             let reqHack = ns.getServerRequiredHackingLevel(x);
  27.             return `<a class="s${f.includes(x) ? " f" : ""}${ns.hasRootAccess(x) ? " r" : ""}">${x}</a>` +
  28.                 ` <span class="hack ${(reqHack <= myHack ? 'green' : 'red')}">(${reqHack})</span>` +
  29.                 `${' @'.repeat(ns.ls(x, ".cct").length)}`;
  30.         };
  31.     let tcommand = x => {
  32.         tIn.value = x;
  33.         tEv.onChange({ target: tIn });
  34.         tEv.onKeyDown({ keyCode: "13", preventDefault: () => 0 });
  35.     };
  36.  
  37.     let addSc = (x = s[0], p1 = ["\n"], o = p1.join("") + fName(x)) => {
  38.         for (let i = 0; i < s.length; i++) {
  39.             if (p[i] != x) continue;
  40.             let p2 = p1.slice();
  41.             p2[p2.length - 1] = p2[p2.push(p.slice(i + 1).includes(p[i]) ? "├╴" : "└╴") - 2].replace("├╴", "│ ").replace("└╴", "  ");
  42.             o += addSc(s[i], p2);
  43.         }
  44.         return o;
  45.     };
  46.     for (let i = 0, j; i < s.length; i++)
  47.         for (j of ns.scan(s[i]))
  48.             if (!s.includes(j)) s.push(j), p.push(s[i]), r[j] = r[s[i]] + ";connect " + j;
  49.     tprint(`<div class="sc new">${addSc()}</div>`);
  50.     doc.querySelectorAll(".sc.new .s").forEach(q => q.addEventListener('click', tcommand.bind(null, r[q.childNodes[0].nodeValue])));
  51.     doc.querySelector(".sc.new").classList.remove("new");
  52. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement