Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { time, pre, getPsrvs, getPsrvNames, getServerNames, getValidServers } from "utils.js";
- /**
- * @param {NS} ns
- */
- export async function main(ns) {
- const daddy = ns.getScriptName();
- const serverNames = getServerNames(ns);
- let target = "foodnstuff";
- if (ns.args.length > 1) {
- ns.tprint(pre(3) + "bad args -- " + daddy + "target?: String");
- ns.exit();
- } else if (serverNames.includes(ns.args[0])) {
- target = ns.args[0];
- }
- ns.disableLog("ALL");
- ns.clearLog();
- ns.tail();
- ns.resizeTail(500, 22 * 18 + 26);
- //ns.moveTail(x, y);
- let threshold = 0.05;
- const p = ns.getPlayer();
- //p.skills.hacking *= 1; // uncomment and set value to experiment with augmentation bonuses
- const s = ns.getServer(target);
- s.hackDifficulty = s.minDifficulty; // assume a prepared target
- s.moneyAvailable = s.moneyMax; // assume a prepared target
- // hack=1.7gb, grow=1.75 weak=1.75
- const hackThreads = Math.max(1, Math.floor(threshold / ns.formulas.hacking.hackPercent(s, p)));
- const hackTime = ns.formulas.hacking.hackTime(s, p);
- const actualHackPercent = hackThreads * ns.formulas.hacking.hackPercent(s, p);
- const actualHackAmount = actualHackPercent * s.moneyMax;
- //const securityIncreaseByHack = ns.hackAnalyzeSecurity(hackThreads); // see next line - toggle (out)comment to verify
- const securityIncreaseByHack = hackThreads * 0.002; // WTF this is fixed?! 1 hackThread => +0.002 security
- ns.print("threads for " + threshold * 100 + "% hack on " + s.hostname + ": " + hackThreads);
- ns.print("=> RAM[GB]: " + hackThreads * 1.7);
- ns.print("=> time[s]: " + ns.formatNumber(hackTime / 1000, 1));
- ns.print("=> actual hack: " + ns.formatNumber(actualHackPercent * 100, 3) + "%"
- + " = $" + ns.formatNumber(actualHackAmount, 1)
- + "/" + ns.formatNumber(s.moneyMax, 1));
- ns.print("=> security increase: " + s.hackDifficulty + " + " + ns.formatNumber(securityIncreaseByHack));
- s.moneyAvailable -= actualHackAmount;
- s.hackDifficulty += securityIncreaseByHack;
- const weakHackThreads = Math.ceil(securityIncreaseByHack / 0.05);
- const weakHackTime = ns.formulas.hacking.weakenTime(s, p);
- const actualWeakHack = weakHackThreads * 0.05;
- ns.print("threads for weakHack: " + weakHackThreads);
- ns.print("=> RAM[GB]: " + weakHackThreads * 1.75);
- ns.print("=> time[s]: " + ns.formatNumber(weakHackTime / 1000, 1));
- ns.print("=> wasted weak: " + ns.formatNumber(actualWeakHack - securityIncreaseByHack, 3));
- s.hackDifficulty = s.minDifficulty;
- const growThreads = ns.formulas.hacking.growThreads(s, p, s.moneyMax);
- const growTime = ns.formulas.hacking.growTime(s, p);
- const actualGrowPercent = ns.formulas.hacking.growPercent(s, growThreads, p);
- const actualGrowAmount = actualGrowPercent * s.moneyAvailable - s.moneyMax;
- //const securityIncreaseByGrow = ns.growthAnalyzeSecurity(growThreads); // see next line - toggle (out)comment to verify
- const securityIncreaseByGrow = growThreads * 0.004; // WTF this is fixed?! 1 growThread => +0.004 security
- ns.print("threads to re-grow: " + growThreads);
- ns.print("=> RAM[GB]: " + growThreads * 1.75);
- ns.print("=> time[s]: " + ns.formatNumber(growTime / 1000, 1));
- ns.print("=> wasted grow: $" + ns.formatNumber(actualGrowAmount, 3));
- ns.print("=> security increase: " + s.hackDifficulty + " + " + securityIncreaseByGrow);
- s.moneyAvailable = s.moneyMax;
- s.hackDifficulty += securityIncreaseByGrow;
- const weakGrowThreads = Math.ceil(securityIncreaseByGrow / 0.05);
- const weakGrowTime = ns.formulas.hacking.weakenTime(s, p);
- const actualWeakGrow = weakGrowThreads * 0.05;
- ns.print("threads for weakGrow: " + weakGrowThreads);
- ns.print("=> RAM[GB]: " + weakGrowThreads * 1.75);
- ns.print("=> time[s]: " + ns.formatNumber(weakGrowTime / 1000, 1));
- ns.print("=> wasted weak: " + ns.formatNumber(actualWeakGrow - securityIncreaseByGrow, 3));
- s.hackDifficulty = s.minDifficulty;
- ns.print("total threads: " + (hackThreads + weakHackThreads + growThreads + weakGrowThreads));
- ns.print("=> RAM[GB]: " + (hackThreads * 1.7 + (weakHackThreads + growThreads + weakGrowThreads) * 1.75));
- ns.print("=> time[s]: " + ns.formatNumber((hackTime + weakHackTime + growTime + weakGrowTime) / 1000, 1));
- }
- export function autocomplete(serverName) {
- return [...serverName.servers];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement