Advertisement
Guest User

Untitled

a guest
Jan 5th, 2022
219
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. /** @param {NS} ns **/
  2. export async function main(ns) {
  3.  
  4. let scriptActive;
  5. let selfName;
  6. let selfSize;
  7. let myName;
  8. let scriptName;
  9. let scriptLen;
  10. let scriptRam;
  11. let maximumRam;
  12. let usedRam;
  13. let availableRam;
  14. let memPerRun;
  15. let threadPerRun;
  16. let i;
  17. let j;
  18. let serverNames;
  19. let serverNum;
  20. let realServerNum;
  21.  
  22. serverNames = ["n00dles", "foodnstuff", "sigma-cosmetics", "joesguns", "hong-fang-tea", "harakiri-sushi", "iron-gym", "neo-net", "nectar-net", "zer0", "max-hardware", "phantasy", "silver-helix", "omega-net", "crush-fitness", "comptek", "the-hub", "netlink", "catalyst", "summit-uni", "rothman-uni", "aevum-police", "rho-construction", "millenium-fitness", "johnson-ortho", "alpha-ent", "syscore", "lexo-corp", "zb-institute", "solaris", "global-pharm", "snap-fitness", "unitalife", "deltaone", "zb-def", "zeus-med", "aerocorp", "nova-med", "icarus", "galactic-cyber", "taiyang-digital","univ-energy","infocomm","omnia","defcomm","applied-energetics","vitalife","titan-labs","microdyne","helios","stormtech","The-Cave","fulcrumassets","powerhouse-fitness","b-and-a","ecorp","blade","kuai-gong","clarkinc","megacorp","nwo","4sigma","omnitek","fulcrumtech"];
  23. scriptName = ["attack.js", "grow.js", "mine.js"];
  24. scriptRam = [];
  25. threadPerRun = [];
  26. serverNum = serverNames.length;
  27. scriptLen = scriptName.length;
  28.  
  29. selfName = ns.getScriptName();
  30. selfSize = ns.getScriptRam(selfName);
  31. myName = ns.getHostname();
  32. maximumRam = ns.getServerMaxRam(myName);
  33. usedRam = ns.getServerUsedRam(myName);
  34. availableRam = maximumRam - usedRam - selfSize;
  35.  
  36.  
  37. for (i = 0; i < scriptLen; i++) {
  38. scriptRam[i] = ns.getScriptRam(scriptName[i]);
  39. }
  40.  
  41. while (true) {
  42. realServerNum = 0;
  43. for (i = 0; i < serverNum; i++) {
  44. if (ns.hasRootAccess(serverNames[i])) {
  45. realServerNum++;
  46. }
  47. }
  48. for (i = 0; i < scriptName.length; i++) {
  49. memPerRun = availableRam / realServerNum;
  50. threadPerRun[i] = (memPerRun / scriptRam[i]) / scriptLen;
  51. if (threadPerRun[i] < 1) {
  52. ns.tprint("Not enough memory for each instance to have a thread.");
  53. } else {
  54. for (j = 0; j < serverNum; j++) {
  55. if (ns.hasRootAccess(serverNames[j])) {
  56. scriptActive = ns.isRunning(scriptName[i], myName, serverNames[j]);
  57. if (scriptActive) {
  58. ns.print(scriptName[i] + " is already running on " + myName + " for " + serverNames[j]);
  59. } else {
  60. ns.run(scriptName[i], threadPerRun[i], serverNames[j]);
  61. ns.tprint("Starting " + scriptName[i] + " for " + serverNames[j] + " on " + myName);
  62. }
  63. } else {
  64. ns.print("No root access on " + serverNames[j]);
  65. }
  66. }
  67. }
  68. }
  69. await ns.sleep(5000);
  70. }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement