miner updates
This commit is contained in:
		@@ -1,5 +1,8 @@
 | 
			
		||||
import {ArgParser} from './scripts/lib/arg-parser';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Pwn a target server will availible tools. Can also copy & execute a script after pwning.
 | 
			
		||||
 */
 | 
			
		||||
export async function main(ns) {
 | 
			
		||||
	ns.disableLog('ALL');
 | 
			
		||||
	
 | 
			
		||||
@@ -24,7 +27,7 @@ export async function main(ns) {
 | 
			
		||||
		args: [
 | 
			
		||||
			{key: 'TARGET', desc: 'Target machine to root. Defaults to localhost'},
 | 
			
		||||
			{key: 'SCRIPT', desc: 'Script to copy & execute'},
 | 
			
		||||
			{key: 'ARGS', desc: 'Any aditional arguments to pass to SCRIPT. Passing \'{{TARGET}}\' will forward the current target'},
 | 
			
		||||
			{key: 'ARGS', desc: 'Aditional arguments for SCRIPT. Forward the target with "{{TARGET}}"'},
 | 
			
		||||
			{key: 'help', alias: 'h', optional: true, desc: 'Display help message'},
 | 
			
		||||
		]
 | 
			
		||||
	});
 | 
			
		||||
 
 | 
			
		||||
@@ -1,36 +1,72 @@
 | 
			
		||||
import {ArgParser} from './scripts/lib/arg-parser';
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Hack a server for it's money.
 | 
			
		||||
 */
 | 
			
		||||
export async function main(ns) {
 | 
			
		||||
	ns.disableLog('ALL');
 | 
			
		||||
	const TARGET = ns.args[0];
 | 
			
		||||
	const SECURITY = ns.getServerMinSecurityLevel(TARGET) + 2;
 | 
			
		||||
	let BALANCE, once = true;
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Print header with logs
 | 
			
		||||
	 * @param message - message to append to logs
 | 
			
		||||
	 */
 | 
			
		||||
	function log(message) {
 | 
			
		||||
		const sec = `${Math.round(security)}/${minSecurity}`;
 | 
			
		||||
		ns.clearLog();
 | 
			
		||||
		ns.print('===================================================');
 | 
			
		||||
		ns.print(`💎⛏️ Mining: ${target}`);
 | 
			
		||||
		ns.print('===================================================');
 | 
			
		||||
		ns.print(`Security: ${sec}${sec.length < 6 ? '\t' : ''}\tBalance: $${Math.round(balance * 100) / 100}`);
 | 
			
		||||
		ns.print('===================================================');
 | 
			
		||||
		if(message != null) messageHistory.push(message);
 | 
			
		||||
		messageHistory.splice(0, messageHistory.length - historyLength);
 | 
			
		||||
		messageHistory.forEach(m => ns.print(m));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	// Initilize script arguments
 | 
			
		||||
	const argParser = new ArgParser({
 | 
			
		||||
		desc: 'Weaken, spoof & hack the target in a loop for money.',
 | 
			
		||||
		examples: [
 | 
			
		||||
			'run miner.js [OPTIONS] [TARGET]',
 | 
			
		||||
			'run miner.js --help',
 | 
			
		||||
		],
 | 
			
		||||
		args: [
 | 
			
		||||
			{key: 'TARGET', desc: 'Target to mine. Defaults to localhost'},
 | 
			
		||||
			{key: 'threads', alias: 't', optional: true, desc: 'Speed up script with more CPU power'},
 | 
			
		||||
			{key: 'help', alias: 'h', optional: true, desc: 'Display help message'},
 | 
			
		||||
		]
 | 
			
		||||
	});
 | 
			
		||||
	const args = argParser.parse(ns.args);
 | 
			
		||||
	if(args['help']) return ns.tprint(argParser.help());
 | 
			
		||||
 | 
			
		||||
	// Setup
 | 
			
		||||
	const historyLength = 15;
 | 
			
		||||
	const messageHistory = Array(historyLength).fill('');
 | 
			
		||||
	const threads = args['threads'] || 1;
 | 
			
		||||
	const target = args['TARGET'] && args['TARGET'] != 'localhost' ? args['TARGET'] : ns.getHostname();
 | 
			
		||||
	const minSecurity = ns.getServerMinSecurityLevel(target) + 2;
 | 
			
		||||
	let orgBalance, balance, security;
 | 
			
		||||
 | 
			
		||||
	log();
 | 
			
		||||
	while(true) {
 | 
			
		||||
		let s = await ns.getServerSecurityLevel(TARGET);
 | 
			
		||||
		let b = await ns.getServerMoneyAvailable(TARGET);
 | 
			
		||||
		if(BALANCE == null) BALANCE = b;
 | 
			
		||||
		// Update information
 | 
			
		||||
		security = await ns.getServerSecurityLevel(target);
 | 
			
		||||
		balance = await ns.getServerMoneyAvailable(target);
 | 
			
		||||
		if(orgBalance == null) orgBalance = balance;
 | 
			
		||||
 | 
			
		||||
		if(once) {
 | 
			
		||||
			ns.print('===================================================');
 | 
			
		||||
			ns.print(`Bankrupting: ${TARGET}`);
 | 
			
		||||
			ns.print('===================================================');
 | 
			
		||||
			ns.print(`Security: ${Math.round(s * 100) / 100}/${SECURITY}`);
 | 
			
		||||
			ns.print(`Balance: $${Math.round(BALANCE * 100) / 100}`);
 | 
			
		||||
			ns.print('===================================================');
 | 
			
		||||
			once = false;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if(s > SECURITY) {
 | 
			
		||||
			ns.print('Attacking Security...');
 | 
			
		||||
			const w = await ns.weaken(TARGET);
 | 
			
		||||
			ns.print(`Security: -${w} (${Math.round((s - w) * 100) / 100}/${SECURITY})`);
 | 
			
		||||
		} else if(b < BALANCE) {
 | 
			
		||||
			ns.print('Spoofing Balance...');
 | 
			
		||||
			const g = await ns.grow(TARGET);
 | 
			
		||||
			ns.print(`Balance: +${Math.round(g * 10) / 10}% ($${Math.round(b * g * 100) / 100})`);
 | 
			
		||||
		// Pick step
 | 
			
		||||
		if(security > minSecurity) {
 | 
			
		||||
			log('Attacking Security...');
 | 
			
		||||
			const w = await ns.weaken(target, {threads});
 | 
			
		||||
			log(`Security: -${w}`);
 | 
			
		||||
		} else if(balance <= orgBalance) {
 | 
			
		||||
			log('Spoofing Balance...');
 | 
			
		||||
			const g = await ns.grow(target, {threads});
 | 
			
		||||
			log(`Balance: +$${Math.round((g * balance - balance) * 100) / 100}`);
 | 
			
		||||
		} else {
 | 
			
		||||
			ns.print('Hacking Account...');
 | 
			
		||||
			const h = await ns.hack(TARGET);
 | 
			
		||||
			ns.print(`Balance: -$${h} ($${Math.round((b - h) * 100) / 100})`);
 | 
			
		||||
			log('Hacking Account...');
 | 
			
		||||
			const h = await ns.hack(target, {threads});
 | 
			
		||||
			log(`Balance: -$${h}`);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,10 @@
 | 
			
		||||
export async function main(ns) {
 | 
			
		||||
    ns.disableLog('ALL');
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Download a file from the repo with some fancy styling & deplays.
 | 
			
		||||
     * @param file {String} - file name
 | 
			
		||||
     */
 | 
			
		||||
    async function download(file) {
 | 
			
		||||
        await ns.wget(`${src}${file}`, `${dest}${file}`);
 | 
			
		||||
        const speed = ~~((Math.random() * 200) + 100) / 10;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user