Files
BitburnerOLD/simple-hack.js
T
2022-09-12 14:24:18 +02:00

54 lines
2.1 KiB
JavaScript

/** @param {import(".").NS } ns */
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(1, `t${timestamp}_${type} = ${obj};\n`);
if (['ERROR', 'TERMINAL'].indexOf(type) != -1) ns.tprint(`${timestamp} ${type} = ${obj}`);
}
let server = ns.args[0];
let maxMoney = ns.getServerMaxMoney(server);
let minSecurity = ns.getServerMinSecurityLevel(server);
let loop = 0;
let previousMoney = 0;
while (maxMoney != 0) {
let currentMoney = ns.getServerMoneyAvailable(server);
let currentSecurity = ns.getServerSecurityLevel(server);
ns.print(`Money: ${currentMoney} / ${maxMoney}`);
ns.print(`Security: ${currentSecurity} / ${minSecurity}`);
let hackedMoney = 0;
if (currentMoney > 0.1 * maxMoney) {
hackedMoney = await ns.hack(server);
currentMoney = ns.getServerMoneyAvailable(server);
}
if (currentMoney < 0.9 * maxMoney) {
while (currentMoney <= previousMoney) {
await ns.grow(server);
currentMoney = ns.getServerMoneyAvailable(server);
}
}
previousMoney = currentMoney;
if (currentSecurity > 2 * minSecurity) {
await ns.weaken(server);
currentSecurity = ns.getServerSecurityLevel(server);
}
await writeLog('LOG', `{server: '${server}', loop: ${++loop}, hack: ${Math.floor(hackedMoney)}, money: ${Math.floor(currentMoney)} / ${Math.floor(maxMoney)} == ${((currentMoney / maxMoney) * 100).toFixed(2)}, security: ${currentSecurity.toFixed(2)} / ${Math.floor(minSecurity)} == ${((currentSecurity / minSecurity) * 100).toFixed(4)}}`);
await ns.sleep(50);
}
}