more work on the lowram scripts

This commit is contained in:
2024-10-10 17:19:40 +02:00
parent 81b1675356
commit a63a9ca66f
15 changed files with 115 additions and 51 deletions

View File

@@ -49,7 +49,7 @@ export async function main(ns) {
//nScriptsRAM = ns.getScriptRam(sScript, "home") + Math.max(nWeakenScriptRAM, nGrowScriptRAM, nHackScriptRAM);
//ns.tprint("nScriptsRAM = " + nScriptsRAM);
if (entry.maxRam >= 20 && serverList[name].rootAccess === true) {
if (entry.maxRam >= 64 && serverList[name].rootAccess === true) {
if (sOverrideTarget !== undefined) {
sTarget = sOverrideTarget;
@@ -73,7 +73,7 @@ export async function main(ns) {
ns.exec(sScript, entry.serverName, 1, sTarget, nFrequency, true, false);
await ns.sleep(1);
}
else if (entry.maxRam < 20 && entry.maxRam > 0 && serverList[name].rootAccess === true) {
else if (entry.maxRam < 64 && entry.maxRam > 0 && serverList[name].rootAccess === true) {
ns.scriptKill(sScript, entry.serverName);
ns.scriptKill(sShareScript, entry.serverName);
ns.scriptKill(sWeakenScript, entry.serverName);

View File

@@ -83,14 +83,14 @@ export function findBestTarget(ns, maxSec, maxPorts, currentHackLevel, manualTar
if (!ns.fileExists("serverList.txt", "home")) scanServerList();
let serverList = JSON.parse(ns.read("serverList.txt"));
let bestEntry = "";
if (manualTargetOverride.length > 0) {
if (manualTargetOverride && manualTargetOverride.length > 0) {
bestEntry = manualTargetOverride;
} else {
bestEntry = null;
let nMaxMoneyPerChance = 0;
let nBestMoneyPerChance = 0;
for (const [name, entry] of Object.entries(serverList)) {
if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl < currentHackLevel) {
if (entry.minSec <= maxSec && entry.minPorts <= maxPorts && entry.minHackLvl <= currentHackLevel) {
nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(name)) / entry.minSec;
if (nMaxMoneyPerChance > nBestMoneyPerChance) {
nBestMoneyPerChance = nMaxMoneyPerChance;
@@ -241,3 +241,15 @@ export function getGrowThreads(ns, sTarget, nHackThreads, nCores) {
let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores);
return nGrowthThreads;
}
/** @param {NS} ns */
export async function ExecuteAndWait(ns, sScript, ...args) {
if (!ns.isRunning(sScript, ...args)) { ns.exec(sScript, ...args); }
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
}
/** @param {NS} ns */
export async function RunAndWait(ns, sScript, ...args) {
if (!ns.isRunning(sScript, ...args)) { ns.run(sScript, ...args); }
while (ns.isRunning(sScript, ...args)) { await ns.sleep(100); }
}

View File

@@ -1 +1 @@
{"home":{"n00dles":{"CSEC":{}},"foodnstuff":{"zer0":{"phantasy":{"crush-fitness":{"rothman-uni":{"aevum-police":{"global-pharm":{"omnia":{"icarus":{"taiyang-digital":{}},"solaris":{"zb-def":{"titan-labs":{"stormtech":{"4sigma":{"blade":{"ecorp":{}},"nwo":{"fulcrumassets":{}}},".":{"powerhouse-fitness":{"The-Cave":{}}}},"vitalife":{"omnitek":{"b-and-a":{"megacorp":{}}}}},"applied-energetics":{},"run4theh111z":{"fulcrumtech":{"kuai-gong":{"clarkinc":{}}},"helios":{}}}}},"deltaone":{"defcomm":{},"univ-energy":{"infocomm":{"microdyne":{}},"nova-med":{}}}}}},"catalyst":{"millenium-fitness":{"galactic-cyber":{"unitalife":{"zeus-med":{}}},"aerocorp":{}}}}}},"nectar-net":{"neo-net":{"computek":{"syscore":{"rho-construction":{"snap-fitness":{}}}}},"silver-helix":{"johnson-ortho":{"summit-uni":{},"I.I.I.I":{"lexo-corp":{}}}},"omega-net":{"the-hub":{"zb-institute":{"alpha-ent":{}}},"netlink":{},"avmnite-02h":{}}}},"sigma-cosmetics":{},"joesguns":{"max-hardware":{}},"hong-fang-tea":{},"harakiri-sushi":{},"iron-gym":{},"pserv-00":{},"pserv-01":{},"pserv-02":{},"pserv-03":{},"pserv-04":{},"pserv-05":{},"pserv-06":{},"pserv-07":{},"pserv-08":{},"pserv-09":{},"pserv-10":{},"pserv-11":{},"pserv-12":{},"pserv-13":{},"pserv-14":{},"pserv-15":{},"pserv-16":{},"pserv-17":{},"pserv-18":{},"pserv-19":{},"pserv-20":{},"pserv-21":{},"pserv-22":{},"pserv-23":{},"pserv-24":{},"darkweb":{}}}
{"home":{"n00dles":{},"foodnstuff":{"zer0":{"silver-helix":{}}},"sigma-cosmetics":{"CSEC":{"neo-net":{"johnson-ortho":{}},"phantasy":{}}},"joesguns":{},"hong-fang-tea":{},"harakiri-sushi":{"max-hardware":{}},"iron-gym":{"nectar-net":{"omega-net":{"the-hub":{"rothman-uni":{"millenium-fitness":{"aerocorp":{"deltaone":{"defcomm":{},"univ-energy":{}}}}}},"computek":{"catalyst":{},"I.I.I.I":{}},"netlink":{"zb-institute":{"lexo-corp":{"global-pharm":{}}},"summit-uni":{"rho-construction":{"snap-fitness":{"omnia":{"icarus":{"zb-def":{"titan-labs":{"fulcrumtech":{"4sigma":{"powerhouse-fitness":{}},"kuai-gong":{"nwo":{"ecorp":{}}}},"helios":{".":{"blade":{"fulcrumassets":{}},"clarkinc":{}}}}}}},"unitalife":{"solaris":{},"zeus-med":{"infocomm":{},"taiyang-digital":{"run4theh111z":{"vitalife":{}}},"nova-med":{"microdyne":{"stormtech":{"omnitek":{"b-and-a":{"megacorp":{},"The-Cave":{}}}}},"applied-energetics":{}}}}}},"alpha-ent":{}},"syscore":{"aevum-police":{"galactic-cyber":{}}}},"crush-fitness":{},"avmnite-02h":{}}}},"darkweb":{},"pserv-00":{},"pserv-01":{},"pserv-02":{},"pserv-03":{},"pserv-04":{},"pserv-05":{},"pserv-06":{},"pserv-07":{},"pserv-08":{},"pserv-09":{},"pserv-10":{},"pserv-11":{},"pserv-12":{},"pserv-13":{},"pserv-14":{},"pserv-15":{},"pserv-16":{},"pserv-17":{},"pserv-18":{},"pserv-19":{},"pserv-20":{},"pserv-21":{},"pserv-22":{},"pserv-23":{},"pserv-24":{}}}

View File

@@ -7,7 +7,7 @@ export async function main(ns) {
let maxPorts = Object.keys(cracks).length;
scanServerList(ns);
let manualTargetOverride = "";
if (ns.getHackingLevel() < 200) {
if (ns.getHackingLevel() < 50) {
manualTargetOverride = "n00dles";
};
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride);

View File

@@ -1,37 +1,31 @@
import { RunAndWait } from "./Library";
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
const sServerListScript = "Serverlist.js";
const sGangScript = "gang/auto-gang2.js";
const sPServScript = "purchaseServers.js";
const sBatchController = "EveryServerRun.js";
const sBackdoorScript = "backdoor.js";
const sUpdateTarget = "Updatebesttarget.js"
const sMonitorScript = "autoexec.js"
const sMonitorScript = "autoexec.js";
const sServerListFile = "serverList.txt";
const sBestServerFile = "bestTarget.txt";
await RunAndWait(ns, sServerListScript);
const oServerList = JSON.parse(ns.read(sServerListFile));
const oHome = oServerList["home"];
if (!ns.isRunning(sServerListScript)){ns.run(sServerListScript);}
while(ns.isRunning(sServerListScript)){await ns.sleep(100);}
if (!ns.isRunning(sGangScript)){ns.run(sGangScript);}
if (!ns.isRunning(sPServScript)){ns.run(sPServScript);}
if (!ns.isRunning(sBackdoorScript)){ns.run(sBackdoorScript);}
while(ns.isRunning(sBackdoorScript)){await ns.sleep(100);}
if (!ns.isRunning(sUpdateTarget)){ns.run(sUpdateTarget);}
while(ns.isRunning(sUpdateTarget)){await ns.sleep(100);}
if (!ns.isRunning(sBatchController)){ns.run(sBatchController, 1, "n00dles");}
while(ns.isRunning(sBatchController)){await ns.sleep(100);}
if (!ns.isRunning(sMonitorScript)){ns.run(sMonitorScript);}
const nHomeMaxRAM = oHome.maxRam;
ns.print("nHomeMaxRAM = " + nHomeMaxRAM);
if (!ns.isRunning(sGangScript)) { ns.run(sGangScript); }
if (!ns.isRunning(sPServScript)) { ns.run(sPServScript); }
await RunAndWait(ns, sBackdoorScript);
await RunAndWait(ns, sUpdateTarget);
await RunAndWait(ns, sBatchController);
if (nHomeMaxRAM >= 256) { if (!ns.isRunning(sMonitorScript)) { ns.run(sMonitorScript); } }
}

View File

@@ -5,7 +5,11 @@ export async function main(ns) {
let cracks = {};
cracks = getCracks(ns);
let maxPorts = Object.keys(cracks).length;
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(),"");
let manualTargetOverride = "";
if (ns.getHackingLevel() < 50) {
manualTargetOverride = "n00dles";
};
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride);
let bestTarget = ns.read("bestTarget.txt")
ns.tprint("Best Target: " + bestTarget);
ns.tprint(Object.keys(JSON.parse(ns.read("serverList.txt"))).length);

View File

@@ -50,18 +50,18 @@ export async function main(ns) {
let nBonusWeaken = 0;
let nBonusGrow = 0;
/*if (nCurrentSecurity > nMinSecurity + 3) {
nBonusWeaken = 4;
if (nCurrentSecurity > nMinSecurity + 2) {
nBonusWeaken = 10;
}
if (nCurrentMoney <= nMaxMoney * 0.8) {
nBonusGrow = 9;
}*/
nBonusGrow = 10;
}
let nGrowThreads = Math.max(12 + nBonusGrow, getGrowThreads(ns, sTarget, nHackThreads));
let nGrowThreads = Math.max(2 + nBonusGrow, getGrowThreads(ns, sTarget, nHackThreads));
let nGrowThreadsINT = Math.ceil(nGrowThreads);
//25 hacks or 12.5 grows
let nWeakenThreads = Math.max(1 + nBonusWeaken, (nHackThreads / 25) + (nGrowThreads / 12.5));
let nWeakenThreads = Math.max(2 + nBonusWeaken, (nHackThreads / 25) + (nGrowThreads / 12.5));
let nWeakenThreadsINT = Math.ceil(nWeakenThreads);
//main variables

View File

@@ -1 +1 @@
{"serverName":"omega-net","maxRam":32,"maxMoney":62276075,"minSec":9,"minPorts":2,"minHackLvl":180,"rootAccess":true,"openPorts":1,"serverOrgs":"Omega Software","serverCores":3,"serverFiles":["Library.js","RMgrow.js","RMhack.js","RMweaken.js","batch.js","contract-105224.cct","contract-263536.cct","settings.txt","the-new-god.lit"]}
{"serverName":"omega-net","maxRam":32,"maxMoney":62700899,"minSec":9,"minPorts":2,"minHackLvl":186,"rootAccess":true,"openPorts":1,"serverOrgs":"Omega Software","serverCores":2,"serverFiles":["Library.js","RMgrow.js","RMhack.js","RMweaken.js","batch.js","factionboost.js","settings.txt","the-new-god.lit"]}

View File

@@ -14,7 +14,7 @@ const STATS_TRESHOLD = 0.7;
const STATS_MIN = 4000;
const STATS_HARD_MIN = 200;
const TRAIN_CHANCE = 0.2;
const RESPECT_MIN = 2e+7;
const RESPECT_MIN = 2e+6;
const WANTED_PENALTY_TRESHOLD = 0.99;
const WARFARE_TRESHOLD = 2;

View File

@@ -0,0 +1,61 @@
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
const sTarget = ns.args[0]; // target server
// Lowram settings
const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js";
const sLowGrowScript = "lowram/Lowgrow.js";
const sGrowScript = "RMgrow.js";
const nThisScriptRAM = ns.getScriptRam(sLowGrowScript, "home");
let nMoney = ns.getServerMoneyAvailable(sTarget);
const nMaxMoney = ns.getServerMaxMoney(sTarget);
const startValue = nMoney; // First argument: starting value
const target = nMaxMoney; // Second argument: target value
let result = startValue; // Initialize result with the starting value
let n = 1;
// For loop that continues until the result exceeds or matches the target
for (; result < target; n++) {
result += 1; // Add 1 before multiplication
result *= n; // Multiply by the current step value
}
let nGrowThreadsNeeded = n * ns.growthAnalyze(sTarget, n, 1);
ns.print("nGrowThreadsNeeded = " + nGrowThreadsNeeded);
//while (nMoney < nMaxMoney) {
let nFreeRam = ns.getServerMaxRam("home") - ns.getServerUsedRam("home");
ns.print("nFreeRam = " + nFreeRam);
ns.print("needed ram = " + Math.ceil(nFreeRam / ns.getScriptRam(sGrowScript, "home")));
ns.print("needed ram? = " + ns.getScriptRam(sGrowScript, "home"));
if (nFreeRam >= (ns.getScriptRam(sGrowScript, "home") * nGrowThreadsNeeded)) {
let nGrowPID = ns.run(sGrowScript, Math.ceil(nGrowThreadsNeeded), sTarget);
await ns.nextPortWrite(nGrowPID);
await ns.sleep(1000);
nMoney = ns.getServerMoneyAvailable(sTarget);
}
else {
ns.print("Too smol");
let nGrowPID = ns.run(sGrowScript, Math.ceil((nFreeRam - nThisScriptRAM) / ns.getScriptRam(sGrowScript, "home")), sTarget);
await ns.nextPortWrite(nGrowPID);
await ns.sleep(1000);
nMoney = ns.getServerMoneyAvailable(sTarget);
}
//back to Lowrun
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
}

View File

@@ -9,12 +9,6 @@ export async function main(ns) {
const sWeakenScript = "RMweaken.js";
const sServerListFile = "serverList.txt";
// Lowram settings
const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js";
const nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7;
const nWeakenScriptRAM = 1.75;

View File

@@ -11,6 +11,7 @@ export async function main(ns) {
const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js";
const sGrowScript = "lowram/Lowgrow.js";
//declare variables
const sWeakenScript = "RMweaken.js";

View File

@@ -7,6 +7,7 @@ export async function main(ns) {
const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js";
const sGrowScript = "lowram/Lowgrow.js";
const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
const nTargetMaxMoney = ns.getServerMaxMoney(sTarget);
@@ -16,17 +17,14 @@ export async function main(ns) {
ns.print(sTarget + " Money = " + nTargetMoney.toLocaleString() + " / " + nTargetMaxMoney.toLocaleString());
ns.print(sTarget + " Security = " + nTargetSecurity.toLocaleString() + " / " + nTargetMinSecurity.toLocaleString());
if ( nTargetSecurity > nTargetMinSecurity) {
ns.killall();
if (nTargetSecurity > nTargetMinSecurity + 1) {
ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget);
}
else if (nTargetMoney < nTargetMaxMoney){
ns.print("need to prep MONEY, running "+sRunScript);
ns.killall();
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
else if (nTargetMoney < nTargetMaxMoney) {
ns.print("need to prep MONEY, running " + sGrowScript);
ns.spawn(sGrowScript, { threads: 1, spawnDelay: 0 }, sTarget);
}
else {
ns.killall();
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
}
}

File diff suppressed because one or more lines are too long

View File

@@ -1,6 +1,6 @@
{"setting":{
"autoUpgrades":true,
"autoPurchaseServers":true,
"batchHacks":3,
"batchHacks":1,
"batchFrequency":100
}}