bitnode1
This commit is contained in:
+56
-116
@@ -3,134 +3,74 @@
|
||||
export async function main(ns) {
|
||||
ns.disableLog('ALL');
|
||||
|
||||
const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.8;
|
||||
const nodeCostThreshold = ns.args.length > 0 ? ns.args[0] : 0.2;
|
||||
const upgradeCostThreshold = ns.args.length > 1 ? ns.args[1] : 0.1;
|
||||
const upgradeCount = ns.args.length > 2 ? ns.args[2] : 1;
|
||||
const nodeCap = 18;
|
||||
const helperBuyThreshold = ns.args.length > 3 ? ns.args[3] : 0.2;
|
||||
const nodeCap = 200;
|
||||
const levelCap = 200;
|
||||
const ramCap = 64;
|
||||
const coreCap = 16;
|
||||
const serverRAM = 32;
|
||||
// const levelCap = 150;
|
||||
// const ramCap = 64;
|
||||
// const coreCap = 4;
|
||||
ns.tprint(`Bot started {nodeCostThreshold: ${nodeCostThreshold}, upgradeCostThreshold: ${upgradeCostThreshold}, upgradeCount: ${upgradeCount}}`);
|
||||
|
||||
// const terminalInput = document.getElementById("terminal-input");
|
||||
// const handler = Object.keys(terminalInput)[1];
|
||||
|
||||
const darkWebPrograms = [
|
||||
{ name: 'BruteSSH.exe', cost: 0 },
|
||||
{ name: 'FTPCrack.exe', cost: 1500000 },
|
||||
{ name: 'relaySMTP.exe', cost: 5000000 },
|
||||
{ name: 'HTTPWorm.exe', cost: 30000000 },
|
||||
{ name: 'SQLInject.exe', cost: 250000000 },
|
||||
{ name: 'ServerProfiler.exe', cost: 500000 },
|
||||
{ name: 'DeepscanV1.exe', cost: 500000 },
|
||||
{ name: 'DeepscanV2.exe', cost: 25000000 },
|
||||
{ name: 'AutoLink.exe', cost: 1000000 },
|
||||
{ name: 'Formulas.exe', cost: 5000000000 }
|
||||
];
|
||||
|
||||
const HACKNET_UPGRADE_PATTERN = {
|
||||
currentLevel: 0,
|
||||
upgradeLevels: [
|
||||
{
|
||||
nodeCount: 6,
|
||||
nodeLevel: 30,
|
||||
ram: 4,
|
||||
cores: 1
|
||||
},
|
||||
{
|
||||
nodeCount: 9,
|
||||
nodeLevel: 60,
|
||||
ram: 8,
|
||||
cores: 2
|
||||
},
|
||||
{
|
||||
nodeCount: 12,
|
||||
nodeLevel: 60,
|
||||
ram: 8,
|
||||
cores: 2
|
||||
},
|
||||
{
|
||||
nodeCount: 15,
|
||||
nodeLevel: 150,
|
||||
ram: 16,
|
||||
cores: 6
|
||||
},
|
||||
{
|
||||
nodeCount: 18,
|
||||
nodeLevel: 200,
|
||||
ram: 64,
|
||||
cores: 16
|
||||
}
|
||||
],
|
||||
complete: false
|
||||
};
|
||||
|
||||
|
||||
while (true) {
|
||||
while (true) {
|
||||
let currentMoney = ns.getServerMoneyAvailable("home");
|
||||
let currentMoney = ns.getServerMoneyAvailable("home");
|
||||
|
||||
if (!HACKNET_UPGRADE_PATTERN.complete) {
|
||||
let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost();
|
||||
let nodeCount = ns.hacknet.numNodes();
|
||||
let nodePurchaseCost = ns.hacknet.getPurchaseNodeCost();
|
||||
let nodeCount = ns.hacknet.numNodes();
|
||||
|
||||
if (nodeCount < nodeCap && nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
|
||||
ns.hacknet.purchaseNode();
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
++nodeCount;
|
||||
}
|
||||
|
||||
for (let index = 0; index < nodeCount; ++index) {
|
||||
let nodeStats = ns.hacknet.getNodeStats(index);
|
||||
|
||||
if (nodeStats.level < levelCap && ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeLevel(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
|
||||
if (nodeStats.ram < ramCap && ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeRam(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
|
||||
if (nodeStats.cores < coreCap && ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeCore(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let serverCost = ns.getPurchasedServerCost(serverRAM);
|
||||
|
||||
if (serverCost < currentMoney) {
|
||||
let newServer = ns.purchaseServer('home', serverRAM);
|
||||
if (newServer != '') {
|
||||
ns.tprint(`Bought a server`);
|
||||
ns.scp('grow-helper.js', newServer);
|
||||
ns.scp('constants.js', newServer);
|
||||
let execExitCode = ns.exec('grow-helper.js', newServer, 5, 20);
|
||||
ns.tprint(`Exec 'grow-helper.js' exit code: ${execExitCode}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// terminalInput.value = backdoorCommand;
|
||||
// terminalInput[handler].onChange({ target: terminalInput });
|
||||
// terminalInput[handler].onKeyDown({ key: 'Enter', preventDefault: () => null });
|
||||
|
||||
|
||||
let logFiles = ['hack-log.js', 'nuke-log.js'];
|
||||
|
||||
for (let index = 0; index < logFiles.length; index++) {
|
||||
const logFile = logFiles[index];
|
||||
let portData = ns.readPort(index + 1);
|
||||
if (portData != 'NULL PORT DATA') ns.write(logFile, portData, 'a');
|
||||
}
|
||||
|
||||
await ns.sleep(1000);
|
||||
if (nodeCount < nodeCap && nodePurchaseCost / Math.abs(currentMoney) < nodeCostThreshold) {
|
||||
ns.hacknet.purchaseNode();
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
++nodeCount;
|
||||
}
|
||||
|
||||
for (let index = 0; index < nodeCount; ++index) {
|
||||
let nodeStats = ns.hacknet.getNodeStats(index);
|
||||
|
||||
if (nodeStats.level < levelCap && ns.hacknet.getLevelUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeLevel(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
|
||||
if (nodeStats.ram < ramCap && ns.hacknet.getRamUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeRam(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
|
||||
if (nodeStats.cores < coreCap && ns.hacknet.getCoreUpgradeCost(index, upgradeCount) / Math.abs(currentMoney) < upgradeCostThreshold) {
|
||||
ns.hacknet.upgradeCore(index, upgradeCount);
|
||||
currentMoney = ns.getServerMoneyAvailable("home");
|
||||
}
|
||||
}
|
||||
|
||||
let serverCost = ns.getPurchasedServerCost(serverRAM);
|
||||
|
||||
if (serverCost < currentMoney * helperBuyThreshold) {
|
||||
let newServer = ns.purchaseServer('home', serverRAM);
|
||||
if (newServer != '') {
|
||||
ns.tprint(`Bought a server`);
|
||||
ns.scp('grow-helper.js', newServer);
|
||||
ns.scp('constants.js', newServer);
|
||||
let execExitCode = ns.exec('grow-helper.js', newServer, 10, 20);
|
||||
ns.tprint(`Exec 'grow-helper.js' exit code: ${execExitCode}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
let logFiles = ['hack-log.js', 'nuke-log.js'];
|
||||
|
||||
for (let index = 0; index < logFiles.length; index++) {
|
||||
const logFile = logFiles[index];
|
||||
let portData = ns.readPort(index + 1);
|
||||
if (portData != 'NULL PORT DATA') ns.write(logFile, portData, 'a');
|
||||
}
|
||||
|
||||
await ns.sleep(1000);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user