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); //nScriptsRAM = ns.getScriptRam(sScript, "home") + Math.max(nWeakenScriptRAM, nGrowScriptRAM, nHackScriptRAM);
//ns.tprint("nScriptsRAM = " + nScriptsRAM); //ns.tprint("nScriptsRAM = " + nScriptsRAM);
if (entry.maxRam >= 20 && serverList[name].rootAccess === true) { if (entry.maxRam >= 64 && serverList[name].rootAccess === true) {
if (sOverrideTarget !== undefined) { if (sOverrideTarget !== undefined) {
sTarget = sOverrideTarget; sTarget = sOverrideTarget;
@@ -73,7 +73,7 @@ export async function main(ns) {
ns.exec(sScript, entry.serverName, 1, sTarget, nFrequency, true, false); ns.exec(sScript, entry.serverName, 1, sTarget, nFrequency, true, false);
await ns.sleep(1); 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(sScript, entry.serverName);
ns.scriptKill(sShareScript, entry.serverName); ns.scriptKill(sShareScript, entry.serverName);
ns.scriptKill(sWeakenScript, 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(); if (!ns.fileExists("serverList.txt", "home")) scanServerList();
let serverList = JSON.parse(ns.read("serverList.txt")); let serverList = JSON.parse(ns.read("serverList.txt"));
let bestEntry = ""; let bestEntry = "";
if (manualTargetOverride.length > 0) { if (manualTargetOverride && manualTargetOverride.length > 0) {
bestEntry = manualTargetOverride; bestEntry = manualTargetOverride;
} else { } else {
bestEntry = null; bestEntry = null;
let nMaxMoneyPerChance = 0; let nMaxMoneyPerChance = 0;
let nBestMoneyPerChance = 0; let nBestMoneyPerChance = 0;
for (const [name, entry] of Object.entries(serverList)) { 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; nMaxMoneyPerChance = (entry.maxMoney * ns.hackAnalyzeChance(name)) / entry.minSec;
if (nMaxMoneyPerChance > nBestMoneyPerChance) { if (nMaxMoneyPerChance > nBestMoneyPerChance) {
nBestMoneyPerChance = nMaxMoneyPerChance; nBestMoneyPerChance = nMaxMoneyPerChance;
@@ -241,3 +241,15 @@ export function getGrowThreads(ns, sTarget, nHackThreads, nCores) {
let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores); let nGrowthThreads = ns.growthAnalyze(sTarget, 1 + nHackAmountPercent, nCores);
return nGrowthThreads; 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; let maxPorts = Object.keys(cracks).length;
scanServerList(ns); scanServerList(ns);
let manualTargetOverride = ""; let manualTargetOverride = "";
if (ns.getHackingLevel() < 200) { if (ns.getHackingLevel() < 50) {
manualTargetOverride = "n00dles"; manualTargetOverride = "n00dles";
}; };
findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride); findBestTarget(ns, 999, maxPorts, ns.getHackingLevel(), manualTargetOverride);

View File

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

View File

@@ -5,7 +5,11 @@ export async function main(ns) {
let cracks = {}; let cracks = {};
cracks = getCracks(ns); cracks = getCracks(ns);
let maxPorts = Object.keys(cracks).length; 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") let bestTarget = ns.read("bestTarget.txt")
ns.tprint("Best Target: " + bestTarget); ns.tprint("Best Target: " + bestTarget);
ns.tprint(Object.keys(JSON.parse(ns.read("serverList.txt"))).length); 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 nBonusWeaken = 0;
let nBonusGrow = 0; let nBonusGrow = 0;
/*if (nCurrentSecurity > nMinSecurity + 3) { if (nCurrentSecurity > nMinSecurity + 2) {
nBonusWeaken = 4; nBonusWeaken = 10;
} }
if (nCurrentMoney <= nMaxMoney * 0.8) { 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); let nGrowThreadsINT = Math.ceil(nGrowThreads);
//25 hacks or 12.5 grows //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); let nWeakenThreadsINT = Math.ceil(nWeakenThreads);
//main variables //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_MIN = 4000;
const STATS_HARD_MIN = 200; const STATS_HARD_MIN = 200;
const TRAIN_CHANCE = 0.2; const TRAIN_CHANCE = 0.2;
const RESPECT_MIN = 2e+7; const RESPECT_MIN = 2e+6;
const WANTED_PENALTY_TRESHOLD = 0.99; const WANTED_PENALTY_TRESHOLD = 0.99;
const WARFARE_TRESHOLD = 2; 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 sWeakenScript = "RMweaken.js";
const sServerListFile = "serverList.txt"; 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 nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7; const nGrowScriptRAM = 1.7;
const nWeakenScriptRAM = 1.75; const nWeakenScriptRAM = 1.75;

View File

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

View File

@@ -7,6 +7,7 @@ export async function main(ns) {
const sBatchScript = "lowram/Lowhgw.js"; const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js"; const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js"; const sRunScript = "lowram/Lowrun.js";
const sGrowScript = "lowram/Lowgrow.js";
const nTargetMoney = ns.getServerMoneyAvailable(sTarget); const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
const nTargetMaxMoney = ns.getServerMaxMoney(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 + " Money = " + nTargetMoney.toLocaleString() + " / " + nTargetMaxMoney.toLocaleString());
ns.print(sTarget + " Security = " + nTargetSecurity.toLocaleString() + " / " + nTargetMinSecurity.toLocaleString()); ns.print(sTarget + " Security = " + nTargetSecurity.toLocaleString() + " / " + nTargetMinSecurity.toLocaleString());
if ( nTargetSecurity > nTargetMinSecurity) { if (nTargetSecurity > nTargetMinSecurity + 1) {
ns.killall();
ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget); ns.spawn(sPrepScript, { threads: 1, spawnDelay: 0 }, sTarget);
} }
else if (nTargetMoney < nTargetMaxMoney) { else if (nTargetMoney < nTargetMaxMoney) {
ns.print("need to prep MONEY, running "+sRunScript); ns.print("need to prep MONEY, running " + sGrowScript);
ns.killall(); ns.spawn(sGrowScript, { threads: 1, spawnDelay: 0 }, sTarget);
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
} }
else { else {
ns.killall();
ns.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget); 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":{ {"setting":{
"autoUpgrades":true, "autoUpgrades":true,
"autoPurchaseServers":true, "autoPurchaseServers":true,
"batchHacks":3, "batchHacks":1,
"batchFrequency":100 "batchFrequency":100
}} }}