init commit
This commit is contained in:
+137
@@ -0,0 +1,137 @@
|
||||
import { isHackable, getNodesByPriority, getNodesByRam } from "getNodes.js";
|
||||
import { formatMoney } from "formatMoney.js";
|
||||
|
||||
var nodes = [];
|
||||
var workerNodes = [];
|
||||
var targetIndex = 0;
|
||||
|
||||
/**
|
||||
* @param {NS} ns
|
||||
* @param {string[]} workerNodes
|
||||
* @param {string} targetNode
|
||||
* @param {string} script
|
||||
*/
|
||||
async function distribute(ns, script) {
|
||||
/*
|
||||
if(script == "hack.js") {
|
||||
var hackAmount = ns.hackAnalyze(nodes[targetIndex]);
|
||||
var totalHackAmount = 0;
|
||||
for(var i = 0; i < workerNodes.length; i++) {
|
||||
var availableThreads = Math.floor(ns.getServerMaxRam(workerNodes[i]) / ns.getScriptRam(script));
|
||||
totalHackAmount += hackAmount * availableThreads;
|
||||
|
||||
// This is to ensure that I do not over-hack the target.
|
||||
if(totalHackAmount < .5) {
|
||||
ns.killall(workerNodes[i]);
|
||||
|
||||
ns.scp(script, workerNodes[i]);
|
||||
ns.exec(script, workerNodes[i], availableThreads, nodes[targetIndex]);
|
||||
} else {
|
||||
if(targetIndex == nodes.length) {
|
||||
ns.tprint("Something really bad has happened...ran out of nodes to hack!");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
*/
|
||||
// Use maximum RAM on all worker nodes.
|
||||
for(var i = 0; i < workerNodes.length; i++) {
|
||||
ns.killall(workerNodes[i]);
|
||||
|
||||
var availableThreads = Math.floor(ns.getServerMaxRam(workerNodes[i]) / ns.getScriptRam(script));
|
||||
|
||||
ns.scp(script, workerNodes[i]);
|
||||
ns.exec(script, workerNodes[i], availableThreads, nodes[targetIndex]);
|
||||
}
|
||||
|
||||
// Use 80% of the home server's RAM to execute the script.
|
||||
var availableThreads = Math.floor((ns.getServerMaxRam("home") / ns.getScriptRam(script)) * 0.8);
|
||||
ns.scriptKill("weaken.js", "home");
|
||||
ns.scriptKill("grow.js", "home");
|
||||
ns.scriptKill("hack.js", "home");
|
||||
ns.run(script, availableThreads, nodes[targetIndex]);
|
||||
//}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {NS} ns
|
||||
*/
|
||||
async function grow(ns) {
|
||||
ns.tprint("distributing grow.js...");
|
||||
distribute(ns, "grow.js");
|
||||
|
||||
var growTime = ns.getGrowTime(nodes[targetIndex]);
|
||||
ns.alert("growing for " + Math.ceil(growTime / 60000) + " minutes");
|
||||
await ns.sleep(growTime + 1000);
|
||||
ns.alert("finished growing " + nodes[targetIndex] + "\nnow at " + formatMoney(ns.getServerMoneyAvailable(nodes[targetIndex])));
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {NS} ns
|
||||
*/
|
||||
async function weaken(ns) {
|
||||
ns.tprint("distributing weaken.js...");
|
||||
distribute(ns, "weaken.js");
|
||||
|
||||
var weakenTime = ns.getWeakenTime(nodes[targetIndex]);
|
||||
ns.alert("weakening for " + Math.ceil(weakenTime / 60000) + " minutes");
|
||||
await ns.sleep(weakenTime + 1000);
|
||||
ns.alert("finished weakening " + nodes[targetIndex]);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {NS} ns
|
||||
* @param {string[]} workerNodes
|
||||
* @param {string} targetNode
|
||||
*/
|
||||
async function hack(ns) {
|
||||
ns.tprint("distributing hack.js...");
|
||||
distribute(ns, "hack.js");
|
||||
|
||||
var hackTime = ns.getHackTime(nodes[targetIndex]);
|
||||
ns.alert("hacking for " + Math.ceil(hackTime / 60000) + " minutes");
|
||||
await ns.sleep(hackTime + 1000);
|
||||
ns.alert("finished hacking " + nodes[targetIndex]);
|
||||
}
|
||||
|
||||
/** @param {NS} ns */
|
||||
export async function main(ns) {
|
||||
nodes = await getNodesByPriority(ns);
|
||||
workerNodes = await getNodesByRam(ns);
|
||||
|
||||
// Override the default target node to use a user provided one instead.
|
||||
if(ns.args.length == 2) {
|
||||
if(ns.args[0] == "--target-node" || ns.args[0] == "-tn") {
|
||||
if(nodes.indexOf(ns.args[1]) != -1 && isHackable(ns, nodes[ns.args[1]])) {
|
||||
targetIndex = nodes.indexOf(ns.args[1]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
while(!isHackable(ns, nodes[targetIndex])) {
|
||||
targetIndex++;
|
||||
|
||||
if(targetIndex == nodes.length) {
|
||||
ns.tprint("No hackable nodes!");
|
||||
exit();
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// @ignore-infinite
|
||||
while(true) {
|
||||
nodes = await getNodesByPriority(ns);
|
||||
workerNodes = await getNodesByRam(ns);
|
||||
let targetNode = nodes[0];
|
||||
|
||||
if(ns.getServerMoneyAvailable(targetNode) != ns.getServerMaxMoney(targetNode)) {
|
||||
await grow(ns);
|
||||
} else if(ns.getServerSecurityLevel(targetNode) > ns.getServerMinSecurityLevel(targetNode)) {
|
||||
await weaken(ns);
|
||||
} else {
|
||||
await hack(ns);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user