This commit is contained in:
2022-10-16 15:22:06 +02:00
parent 017f853a03
commit af84e9b05f
10 changed files with 212 additions and 49 deletions
+129
View File
@@ -0,0 +1,129 @@
/** @param {import(".").NS } ns */
/**
* get all servers
* for servers ram > 0 get ram, get money
* home ram substract ram needed for bots
* get available threads for each server for hack/grow/weaken
* sum all money
* run with proportion to the money available
*/
export async function main(ns) {
// ns.disableLog('ALL');
async function writeLog(type, obj) {
let timeNow = new Date();
let year = timeNow.getFullYear().toString().substring(2);
let month = (timeNow.getMonth() < 9 ? '0' : '') + (timeNow.getMonth() + 1);
let day = (timeNow.getDate() < 10 ? '0' : '') + timeNow.getDate();
let hour = (timeNow.getHours() < 10 ? '0' : '') + timeNow.getHours();
let minute = (timeNow.getMinutes() < 10 ? '0' : '') + timeNow.getMinutes();
let second = (timeNow.getSeconds() < 10 ? '0' : '') + timeNow.getSeconds();
let timestamp = `${year}${month}${day}_${hour}${minute}${second}`;
await ns.tryWritePort(2, `t${timestamp}_${type} = ${obj};\n`);
if (['ERROR', 'TERMINAL'].indexOf(type) != -1) ns.tprint(`${timestamp} ${type} = ${obj}`);
}
async function runHack(server) {
let script = 'simple-hack.js';
let serverStatus = analyzeServer(server);
await writeLog('ANALYZE', `{server: "${server}", status: ${JSON.stringify(serverStatus)}}`);
if (!serverStatus.rootAccess) {
if (serverStatus.nukeAvailable) {
await writeLog('NUKE', `"Nuking ${server}!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"`);
for (let i = 0; i < maxPortsToHack(); ++i) {
switch (EXPLOITS[i]) {
case 'BruteSSH.exe':
ns.brutessh(server);
break;
case 'FTPCrack.exe':
ns.ftpcrack(server);
break;
case 'relaySMTP.exe':
ns.relaysmtp(server);
break;
case 'HTTPWorm.exe':
ns.httpworm(server);
break;
case 'SQLInject.exe':
ns.sqlinject(server);
break;
}
}
ns.nuke(server);
}
}
serverStatus = analyzeServer(server);
if (serverStatus.rootAccess) {
if (!ns.fileExists(script, 'home')) {
await writeLog('ERROR', `"Script '${script}' doesn't exist!"`);
// return -3;
}
ns.scp(script, server, 'home');
let serverMaxRam = ns.getServerMaxRam(server);
let serverUsedRam = ns.getServerUsedRam(server);
let serverFreeRam = serverMaxRam - serverUsedRam;
let scriptRam = ns.getScriptRam(script, server);
let maxThreads = Math.floor(serverFreeRam / scriptRam);
let a = ns.scriptRunning(script, server);
if (!a) {
if (maxThreads == 0) {
// await writeLog('ERROR', `"Not enough ram to run '${script}' on '${server}', ${scriptRam}/${serverFreeRam}!"`);
return -4;
}
let execExitCode = ns.exec(script, server, maxThreads, server);
if (!execExitCode) {
// await writeLog('ERROR', `"Exec error running script '${script} on '${server}!"`);
return -5;
}
else {
return execExitCode;
}
} else {
// await writeLog('ERROR', `"Hack already running on ${server}"`);
return 0;
}
}
return -6;
}
function scanServer(currentServer, previousServer = currentServer) {
let availableServers = ns.scan(currentServer);
let result = [];
for (let i = 0; i < availableServers.length; ++i) {
let nextServer = availableServers[i];
if (nextServer != currentServer && nextServer != previousServer) {
result.concat(scanServer(nextServer, currentServer));
}
}
return [currentServer].concat(result);
}
while(true){
let network = scanServer('home');
await sleep(100);
}
}
+3 -1
View File
@@ -19,5 +19,7 @@ const COMPLETED_FACTIONS = [
'NiteSec', 'NiteSec',
'The Black Hand', 'The Black Hand',
'Aevum', 'Aevum',
'Sector-12' 'Sector-12',
'Volhaven',
'Tian Di Hui'
]; ];
+7
View File
@@ -0,0 +1,7 @@
/** @param {import(".").NS } ns */
export async function main(ns) {
// ns.disableLog('ALL');
}
+7
View File
@@ -0,0 +1,7 @@
/** @param {import(".").NS } ns */
export async function main(ns) {
// ns.disableLog('ALL');
}
+5 -2
View File
@@ -10,6 +10,7 @@ export async function main(ns) {
const levelCap = 200; const levelCap = 200;
const ramCap = 64; const ramCap = 64;
const coreCap = 16; const coreCap = 16;
const serverRAM = 32;
// const levelCap = 150; // const levelCap = 150;
// const ramCap = 64; // const ramCap = 64;
// const coreCap = 4; // const coreCap = 4;
@@ -68,6 +69,7 @@ export async function main(ns) {
complete: false complete: false
}; };
while (true) {
while (true) { while (true) {
let currentMoney = ns.getServerMoneyAvailable("home"); let currentMoney = ns.getServerMoneyAvailable("home");
@@ -101,10 +103,10 @@ export async function main(ns) {
} }
} }
let serverCost = ns.getPurchasedServerCost(16); let serverCost = ns.getPurchasedServerCost(serverRAM);
if (serverCost < currentMoney) { if (serverCost < currentMoney) {
let newServer = ns.purchaseServer('home', 16); let newServer = ns.purchaseServer('home', serverRAM);
if (newServer != '') { if (newServer != '') {
ns.tprint(`Bought a server`); ns.tprint(`Bought a server`);
ns.scp('grow-helper.js', newServer); ns.scp('grow-helper.js', newServer);
@@ -131,3 +133,4 @@ export async function main(ns) {
await ns.sleep(1000); await ns.sleep(1000);
} }
} }
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+11
View File
@@ -0,0 +1,11 @@
/** @param {import(".").NS } ns */
export async function main(ns) {
// ns.disableLog('ALL');
let target;
if(ns.args.length == 1) {
target = JSON.parse(ns.args[0]);
}
}