sync corp

This commit is contained in:
Philipp
2024-10-14 23:47:55 +02:00
parent ace1971468
commit 988b2ffb23
12 changed files with 464 additions and 33 deletions

View File

@@ -0,0 +1,62 @@
/** @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 sDistScript = "testdistribute.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

@@ -0,0 +1,120 @@
import { getGrowThreads, getSetting } from "Library.js";
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
const sTarget = ns.args[0]; // target server
const sHackScript = "RMhack.js";
const sGrowScript = "RMgrow.js";
const sWeakenScript = "RMweaken.js";
const sServerListFile = "serverList.txt";
const sDistScript = "testdistribute.js";
const nHackScriptRAM = 1.75;
const nGrowScriptRAM = 1.7;
const nWeakenScriptRAM = 1.75;
const nThisScriptRAM = 4.70;
await ns.sleep(1);
while (true) {
let nMaxRAM = ns.getServerMaxRam("home");
let oServerlist = JSON.parse(ns.read(sServerListFile));
//let nMaxRAM = oServerlist[1].nMaxRAM;
ns.tprint("nMaxRAM = " + nMaxRAM);
//let nMaxRAM = [name, entry] of Object.entries(oServerlist);
//let nMaxRAM = oServerlist["home"].maxRam;
//ns.print("nMaxRAM = " + nMaxRAM);
let nWeakenTime = ns.getWeakenTime(sTarget);
let nGrowTime = nWeakenTime * 0.8;
let nHackTime = nWeakenTime / 4;
let nGrowDelay = nWeakenTime - nGrowTime;
let nHackDelay = nWeakenTime - nHackTime;
let nUsedRAM = nThisScriptRAM;
let nHackThreads;
let nGrowThreads;
let nGrowThreadsINT;
let nWeakenThreads;
let nWeakenThreadsINT;
let nCheckRAM;
let nTotalHackRAM;
let nTotalGrowRAM;
let nTotalWeakenRAM;
let nTempHackThreads;
let nTempGrowThreads;
let nTempGrowThreadsINT;
let nTempWeakenThreads;
let nTempWeakenThreadsINT;
for (let i = 1; nUsedRAM < nMaxRAM; i++) {
nTempHackThreads = i;
//ns.print("nTempHackThreads = " + nTempHackThreads);
nTempGrowThreads = Math.max(2, getGrowThreads(ns, sTarget, nTempHackThreads));
nTempGrowThreadsINT = Math.ceil(nTempGrowThreads);
//ns.print("nTempGrowThreads = " + nTempGrowThreads);
//ns.print("nTempGrowThreadsINT = " + nTempGrowThreadsINT);
//25 hacks or 12.5 grows
nTempWeakenThreads = Math.max(2, (nTempHackThreads / 25) + (nTempGrowThreadsINT / 12.5));
nTempWeakenThreadsINT = Math.ceil(nTempWeakenThreads);
//ns.print("nTempWeakenThreads = " + nTempWeakenThreads);
//ns.print("nTempWeakenThreadsINT = " + nTempWeakenThreadsINT);
nTotalHackRAM = (nTempHackThreads * nHackScriptRAM);
nTotalGrowRAM = (nTempGrowThreadsINT * nGrowScriptRAM);
nTotalWeakenRAM = (nTempWeakenThreadsINT * nWeakenScriptRAM);
//ns.print("nTotalHackRAM = " + nTotalHackRAM);
//ns.print("nTotalGrowRAM = " + nTotalGrowRAM);
//ns.print("nTotalWeakenRAM = " + nTotalWeakenRAM);
nCheckRAM = nThisScriptRAM + (nTempHackThreads * nHackScriptRAM) + (nTempGrowThreadsINT * nGrowScriptRAM) + (nTempWeakenThreadsINT * nWeakenScriptRAM);
//ns.print("nCheckRAM = " + nCheckRAM);
if (nCheckRAM < nMaxRAM) {
nUsedRAM = nCheckRAM;
nHackThreads = nTempHackThreads;
nGrowThreads = nTempGrowThreads;
nGrowThreadsINT = nTempGrowThreadsINT;
nWeakenThreads = nTempWeakenThreads;
nWeakenThreadsINT = nTempWeakenThreadsINT;
}
else {
break;
}
//ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM);
}
//ns.print("nMaxRAM = " + nMaxRAM + " nUsedRAM = " + nUsedRAM);
let nHackPID = ns.run(sHackScript, nHackThreads, sTarget, false, nHackDelay - 100);
let nGrowPID = ns.run(sGrowScript, nGrowThreadsINT, sTarget, false, nGrowDelay - 50);
let nWeakenPID = ns.run(sWeakenScript, nWeakenThreadsINT, sTarget, false, 0);
//ns.tail(nHackPID, "home", nHackThreads, sTarget, false, nHackDelay - 100);
//ns.tail(nGrowPID, "home", nGrowThreadsINT, sTarget, false, nGrowDelay - 50);
//ns.tail(nWeakenPID, "home", nWeakenThreadsINT, sTarget, false, 0);
await Promise.all([
ns.nextPortWrite(nHackPID),
ns.nextPortWrite(nGrowPID),
ns.nextPortWrite(nWeakenPID)
])
await ns.sleep(1);
let nHackFinnish = ns.readPort(nHackPID);
let nGrowFinnish = ns.readPort(nGrowPID);
let nWeakenFinnish = ns.readPort(nWeakenPID);
ns.print("nHackFinnish = " + nHackFinnish);
ns.print("nGrowFinnish = " + nGrowFinnish);
ns.print("nWeakenFinnish = " + nWeakenFinnish);
}
}

View File

@@ -0,0 +1,66 @@
/** @param {NS} ns */
export async function main(ns) {
ns.tail();
const sTarget = ns.args[0]; // target server
// declare objects
const oHome = ns.getServer("home");
//const oTarget = ns.getServer(sTarget);
// Lowram settings
const sBatchScript = "lowram/Lowhgw.js";
const sPrepScript = "lowram/Lowprep.js";
const sRunScript = "lowram/Lowrun.js";
const sGrowScript = "lowram/Lowgrow.js";
const sDistScript = "testdistribute.js";
//declare variables
const sWeakenScript = "RMweaken.js";
const nCores = oHome.cpuCores;
let nSecurity = ns.getServerSecurityLevel(sTarget);
const nMinSecurity = ns.getServerMinSecurityLevel(sTarget);
const nWeakenSTR = ns.weakenAnalyze(1, nCores);
let nThreads = Math.ceil((nSecurity - nMinSecurity) / nWeakenSTR);
//ns.print("nThreads = " + nThreads);
ns.tail(ns.pid, oHome.hostname, sTarget);
//ns.resizeTail(815, 395);
//ns.moveTail(1925, 0);
let nWeakenPID;
if (nThreads > 0) {
const nDelay = ns.getWeakenTime(sTarget);
ns.print("current security is: " + nSecurity);
ns.print("minimum security is: " + nMinSecurity);
ns.print("threads needed for weaken: " + nThreads);
ns.print(nThreads + " will reduce Security by " + ns.weakenAnalyze(nThreads, nCores));
ns.print(nThreads + " of " + sWeakenScript + " requires " + (ns.getScriptRam(sWeakenScript, "home") * nThreads) + " GB of RAM");
ns.print("weakening will take " + (nDelay / 1000 / 60) + " minutes");
ns.run(sDistScript, 1, sWeakenScript, nThreads, sTarget, false, 0);
await ns.sleep(nDelay+10);
/*
if ((ns.getServerMaxRam(oHome.hostname) - ns.getServerUsedRam(oHome.hostname)) >= (ns.getScriptRam(sWeakenScript, "home") * nThreads)) {
nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget);
//ns.print("Waiting for PID = " + nWeakenPID);
await ns.nextPortWrite(nWeakenPID);
nSecurity = ns.getServerSecurityLevel(sTarget);
//ns.print("Breach complete, security level is now at: " + nSecurity);
}
else {
nThreads = Math.floor(((ns.getServerMaxRam("home") - ns.getServerUsedRam("home")) / ns.getScriptRam(sWeakenScript)));
nWeakenPID = ns.exec(sWeakenScript, nThreads, sTarget);
//ns.print("Waiting for PID = " + nWeakenPID);
await ns.nextPortWrite(nWeakenPID);
nSecurity = ns.getServerSecurityLevel(sTarget);
//ns.print("Breach in progress, security level is now at: " + nSecurity);
}
*/
}
//back to Lowrun
ns.spawn(sRunScript, { threads: 1, spawnDelay: 0 }, sTarget);
}

View File

@@ -0,0 +1,33 @@
/** @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 sGrowScript = "lowram/Lowgrow.js";
const sDistScript = "testdistribute.js";
await ns.sleep(1);
const nTargetMoney = ns.getServerMoneyAvailable(sTarget);
const nTargetMaxMoney = ns.getServerMaxMoney(sTarget);
const nTargetSecurity = ns.getServerSecurityLevel(sTarget);
const nTargetMinSecurity = ns.getServerMinSecurityLevel(sTarget);
//ns.print(sTarget + " Money = " + nTargetMoney.toLocaleString() + " / " + nTargetMaxMoney.toLocaleString());
//ns.print(sTarget + " Security = " + nTargetSecurity.toLocaleString() + " / " + nTargetMinSecurity.toLocaleString());
if (nTargetSecurity > nTargetMinSecurity + 1) {
ns.spawn(sPrepScript, { 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.spawn(sBatchScript, { threads: 1, spawnDelay: 0 }, sTarget);
}
}