Bitburner – Crime Script Code – Odds of Success + Requirements

Bitburner – Crime Script Code – Odds of Success + Requirements 1 - steamlists.com
Bitburner – Crime Script Code – Odds of Success + Requirements 1 - steamlists.com

A script that make it’s choice based on the odds of success with the amount of money made and the time involved.

How it works

By utilizing a small formula to evaluate the crime it is possible to make better choices on the outcomes.

The ranking is created by taking the amount of money that can be earned then multiplying that by the odds of the crime’s success and finally dividing that by the time taken.

There is definitely a more thought out way to do this by it will give a very basic money per sec valuation which the script uses to make it’s choice.

Requirements

Bitnode4

17.10GB of Ram

Code

Create a file

nano crime.js

Throw the following into it

const crimes = [
 "heist",
 "assassination",
 "kidnap",
 "grand theft auto",
 "homicide",
 "larceny",
 "mug someone",
 "rob store",
 "shoplift",
];

/** @param {import(".").NS } ns */export async function main(ns) {
 // Disable the log
 ns.disableLog("ALL");

 ns.tail(); // Open a window to view the status of the script
 let timeout = 250; // In ms - too low of a time will result in a lockout/hang

 while (true) {
 await ns.sleep(timeout); // Wait it out first
 if (ns.isBusy()) continue;
 /** Calculate the risk value of all crimes */ let choices = crimes.map((crime) => {
 let crimeStats = ns.getCrimeStats(crime); // Let us look at the important bits
 let crimeChance = ns.getCrimeChance(crime); // We need to calculate if its worth it
 /** Using probabilty(odds) to calculate the "risk" to get the best reward
 * Risk Value = Money Earned * Odds of Success(P(A) / ~P(A)) / Time taken
 *
 * Larger risk values indicate a better choice
 */ let crimeRiskValue =
 (crimeStats.money * Math.log10(crimeChance / (1 - crimeChance + Number.EPSILON))) /
 crimeStats.time;
 return [crime, crimeRiskValue];
 });

 let bestCrime = choices.reduce((prev, current) => {
 return prev[1] > current[1] ? prev : current;
 });

 ns.commitCrime(bestCrime[0]);
 ns.print(
 `Crime: ${bestCrime[0]} Risk Value: ${bestCrime[1].toPrecision(3)} Cash to Earn: \$${ns
 .getCrimeStats(bestCrime[0])
 .money.toPrecision(4)}`
 );
 }
}

Run

run crime.js

The script will attempt to go to the crime page if unlocked.

As a note if you have Sleeves unlocked with the bitnode it might be required to manually start the crime for the 1st time as if they are actively doing a task the

ns.isbusy()

reports back true until something is done. After that it works correctly.

Final Thoughts

This script will follow it’s basic money making strategy and as the player gains better stats it will generate more and more money.

If the player does not boost their stats other than shop lifting it might get stuck in a shoplifting loop as it is only growing those stats making it better at doing so, gain some defense and strength will allow it to change to a better target.

Written by owenz

Hope you enjoy the Guide about Bitburner – Crime Script Code – Odds of Success + Requirements, if you think we should add extra information or forget something, please let us know via comment below, and we will do our best to fix or update as soon as possible!


2 Comments

Leave a Reply

Your email address will not be published.


*