Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- export async function main(ns) {
- //number of gigs for each server to have
- let servers = ns.getPurchasedServers();
- ns.tprint("I'm alive");
- let serverGigs = 0;
- if (servers.length === 0) {
- serverGigs = 4;
- } else {
- sort(ns, servers);
- serverGigs = (ns.getServerRam(servers[servers.length - 1])[0] * 2);
- }
- ns.tprint("RAM: " + serverGigs);
- //money multiplier (55k per gigabyte)
- const moneyPerGig = 55000;
- //excess is how much additional money I want - 110% is my initial amount.
- const excess = 110;
- while (true) {
- if (ns.getServerMoneyAvailable("home") >= serverGigs * moneyPerGig * excess / 100) {
- let purchasedServers = ns.getPurchasedServers();
- if (purchasedServers.length == 25) {
- //if max number of servers is owned, delete least RAM-heavy one
- await sort(ns, purchasedServers);
- //TODO: REMOVE TARGET OF SERVER THAT JUST GOT DELETED FROM TARGETED
- ns.tprint("Removing server " + purchasedServers[0]);
- ns.deleteServer(purchasedServers[0]);
- } else {
- ns.tprint("Less than 25 servers, none sold");
- }
- ns.purchaseServer(serverGigs + "server", serverGigs);
- //set up the new server to hack the most valuable target. Increase serverGigs
- ns.tprint("Running setup on server named " + serverGigs + "server");
- setup(ns, serverGigs + "server");
- serverGigs *= 2;
- }
- await ns.sleep(30000);
- }
- }
- async function sort(ns, purchasedServers) {
- for (let i = 0; i < purchasedServers.length; i++) {
- let lowestRAMServer = i;
- for (let j = i; j < purchasedServers.length; j++) {
- if (ns.getServerRam(purchasedServers[j]) > ns.getServerRam(purchasedServers[i])) {
- lowestRAMServer = j;
- }
- }
- let tempHolder = purchasedServers[i];
- purchasedServers[i] = purchasedServers[lowestRAMServer];
- purchasedServers[lowestRAMServer] = tempHolder;
- }
- }
- async function setup(ns, server) {
- ns.tprint(server);
- let runnableScripts = ~~(ns.getServerRam(server)[0] / ns.getScriptRam("basic_hack.ns"));
- //while there are no targets, wait
- let targets = ns.read("targetable.txt");
- while (targets === '') {
- async ns.sleep(5000);
- targets = ns.read("targetable.txt");
- }
- let targetList = targets.split(":");
- ns.tprint(targetList[0]);
- let target = targetList[0];
- ns.tprint(target);
- //copy basic hack to server
- ns.scp("basic_hack.ns", server);
- //run as many copies of basic_hack as possible
- ns.tprint("Runnable scripts:" + runnableScripts);
- ns.tprint("Min security: " + ns.getServerMinSecurityLevel(server));
- ns.tprint("Target: " + target);
- await ns.exec ("basic_hack.ns", server, runnableScripts,
- ns.getServerMinSecurityLevel(server) + 2, target);
- targetList.shift();
- //update targetable with the new list
- ns.write("targeted.txt", server, 'w');
- for (let i = 0; i < targetList.length; i++) {
- ns.write("targetable.txt", targetList[i], 'a');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement