mirror of
https://github.com/bitburner-official/bitburner-src.git
synced 2024-12-23 14:42:28 +01:00
(feat) optional threads argument to netscript functions hack, weaken, grow
This commit is contained in:
parent
585e1ac7aa
commit
44c26165f4
@ -155,6 +155,21 @@ export function makeRuntimeRejectMsg(workerScript, msg, exp=null) {
|
||||
return "|"+workerScript.serverIp+"|"+workerScript.name+"|" + msg + lineNum;
|
||||
}
|
||||
|
||||
export function resolveNetscriptRequestedThreads(workerScript, functionName, requestedThreads) {
|
||||
const threads = workerScript.scriptRef.threads;
|
||||
if (!requestedThreads) {
|
||||
return isNaN(threads) || threads < 1 ? 1 : threads;
|
||||
}
|
||||
const requestedThreadsAsInt = requestedThreads|0;
|
||||
if (isNaN(requestedThreads) || requestedThreadsAsInt < 1) {
|
||||
throw makeRuntimeRejectMsg(workerScript, `Invalid thread count passed to ${functionName}: ${requestedThreads}. Threads must be a positive number.`);
|
||||
}
|
||||
if (requestedThreads > threads) {
|
||||
throw makeRuntimeRejectMsg(workerScript, `Too many threads requested by ${functionName}. Requested: ${requestedThreads}. Has: ${threads}.`);
|
||||
}
|
||||
return requestedThreadsAsInt;
|
||||
}
|
||||
|
||||
//Run a script from inside a script using run() command
|
||||
export function runScriptFromScript(server, scriptname, args, workerScript, threads=1) {
|
||||
//Check if the script is already running
|
||||
|
@ -113,7 +113,8 @@ import {
|
||||
import {
|
||||
makeRuntimeRejectMsg,
|
||||
netscriptDelay,
|
||||
runScriptFromScript
|
||||
resolveNetscriptRequestedThreads,
|
||||
runScriptFromScript,
|
||||
} from "./NetscriptEvaluator";
|
||||
import { NetscriptPort } from "./NetscriptPort";
|
||||
import { SleeveTaskType } from "./PersonObjects/Sleeve/SleeveTaskTypesEnum";
|
||||
@ -467,7 +468,7 @@ function NetscriptFunctions(workerScript) {
|
||||
}
|
||||
return out;
|
||||
},
|
||||
hack : function(ip){
|
||||
hack : function(ip, { threads: requestedThreads } = {}){
|
||||
if (workerScript.checkingRam) {
|
||||
return updateStaticRam("hack", CONSTANTS.ScriptHackRamCost);
|
||||
}
|
||||
@ -475,8 +476,7 @@ function NetscriptFunctions(workerScript) {
|
||||
if (ip === undefined) {
|
||||
throw makeRuntimeRejectMsg(workerScript, "Hack() call has incorrect number of arguments. Takes 1 argument");
|
||||
}
|
||||
var threads = workerScript.scriptRef.threads;
|
||||
if (isNaN(threads) || threads < 1) {threads = 1;}
|
||||
var threads = resolveNetscriptRequestedThreads(workerScript, "hack", requestedThreads);
|
||||
var server = getServer(ip);
|
||||
if (server == null) {
|
||||
workerScript.scriptRef.log("hack() error. Invalid IP or hostname passed in: " + ip + ". Stopping...");
|
||||
@ -597,13 +597,12 @@ function NetscriptFunctions(workerScript) {
|
||||
return Promise.resolve(true);
|
||||
});
|
||||
},
|
||||
grow : function(ip){
|
||||
grow : function(ip, { threads: requestedThreads } = {}){
|
||||
if (workerScript.checkingRam) {
|
||||
return updateStaticRam("grow", CONSTANTS.ScriptGrowRamCost);
|
||||
}
|
||||
updateDynamicRam("grow", CONSTANTS.ScriptGrowRamCost);
|
||||
var threads = workerScript.scriptRef.threads;
|
||||
if (isNaN(threads) || threads < 1) {threads = 1;}
|
||||
var threads = resolveNetscriptRequestedThreads(workerScript, "grow", requestedThreads);
|
||||
if (ip === undefined) {
|
||||
throw makeRuntimeRejectMsg(workerScript, "grow() call has incorrect number of arguments. Takes 1 argument");
|
||||
}
|
||||
@ -659,13 +658,12 @@ function NetscriptFunctions(workerScript) {
|
||||
|
||||
return numCycleForGrowth(server, Number(growth), Player);
|
||||
},
|
||||
weaken : function(ip) {
|
||||
weaken : function(ip, { threads: requestedThreads } = {}) {
|
||||
if (workerScript.checkingRam) {
|
||||
return updateStaticRam("weaken", CONSTANTS.ScriptWeakenRamCost);
|
||||
}
|
||||
updateDynamicRam("weaken", CONSTANTS.ScriptWeakenRamCost);
|
||||
var threads = workerScript.scriptRef.threads;
|
||||
if (isNaN(threads) || threads < 1) {threads = 1;}
|
||||
var threads = resolveNetscriptRequestedThreads(workerScript, "weaken", requestedThreads)
|
||||
if (ip === undefined) {
|
||||
throw makeRuntimeRejectMsg(workerScript, "weaken() call has incorrect number of arguments. Takes 1 argument");
|
||||
}
|
||||
|
@ -219,9 +219,17 @@ function startNetscript1Script(workerScript) {
|
||||
name === "prompt" || name === "run" || name === "exec") {
|
||||
let tempWrapper = function() {
|
||||
let fnArgs = [];
|
||||
|
||||
//All of the Object/array elements are in JSInterpreter format, so
|
||||
//we have to convert them back to native format to pass them to these fns
|
||||
for (let i = 0; i < arguments.length-1; ++i) {
|
||||
fnArgs.push(arguments[i]);
|
||||
if (typeof arguments[i] === 'object' || arguments[i].constructor === Array) {
|
||||
fnArgs.push(int.pseudoToNative(arguments[i]));
|
||||
} else {
|
||||
fnArgs.push(arguments[i]);
|
||||
}
|
||||
}
|
||||
console.log(fnArgs);
|
||||
let cb = arguments[arguments.length-1];
|
||||
let fnPromise = entry.apply(null, fnArgs);
|
||||
fnPromise.then(function(res) {
|
||||
|
Loading…
Reference in New Issue
Block a user