Guest User

Failing bitburner batch script

a guest
Mar 17th, 2025
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
TypeScript 5.06 KB | Source Code | 0 0
  1. import { settings, Debugger, Out, Task, BatchExecutionOrder, prepareServer } from 'PRTS/services/utils.ts'
  2. export async function main(ns: NS) {
  3.  
  4.   //var declaration
  5.   ns.clearLog()
  6.   ns.disableLog('ALL')
  7.   // const target = 'max-hardware'
  8.   const target = ns.args[0]
  9.   const { out } = new Debugger(ns)
  10.   const debug = new Debugger(ns, true)
  11.   const orderPort = ns.getPortHandle(settings.ports.router.orders)
  12.   if (typeof target !== 'string') {
  13.     out.terror('first argument have to be a hostname')
  14.     return
  15.   }
  16.   out.normal('preparing ', target)
  17.   await prepareServer(ns, target)
  18.   // execution
  19.   while (true) {
  20.     out.info('attacking ', target)
  21.     const delays = getDelays(ns, target, 100)
  22.     const { hackThreads, growThreads, hWeakenThreads, gWeakenThreads } = buildHWGW(ns, target, new Debugger(ns, false))
  23.     const tasks = [
  24.       new Task('H', Date.now() + delays.hack, hackThreads),
  25.       new Task('W', Date.now() + delays.hWeaken, hWeakenThreads),
  26.       new Task('G', Date.now() + delays.grow, growThreads),
  27.       new Task('W', Date.now() + delays.gWeaken, gWeakenThreads)
  28.     ]
  29.  
  30.     setOrder(ns, out, orderPort, tasks, target)
  31.     out.info('order designated and pushed')
  32.  
  33.     out.normal('awaiting for ', ns.tFormat(delays.awaitTime), ' seconds')
  34.     await ns.sleep(delays.awaitTime)
  35.     debug.isServerPrepared(ns.getServer(target), true)
  36.   }
  37. }
  38.  
  39. function setOrder(ns: NS, out: Out, port: NetscriptPort, tasks: Task[], target: string) {
  40.   const order: BatchExecutionOrder = new BatchExecutionOrder(tasks, target)
  41.   port.tryWrite(order) ? out.success('Order targeting ', target, ' wirtten to the port') : out.popup('Order targeting ', target, ' failed to write the port')
  42. }
  43.  
  44. function getHGThreads(hacking: HackingFormulas, isServerPrepared: (server: Server, shouldLog?: boolean) => boolean, server: Server, player: Player) {
  45.   if (!server.moneyAvailable || !server.moneyMax || !server.hackDifficulty || !server.minDifficulty) {
  46.     throw new Error('FUCKING SHIT DOESENT HAVE PROPERTIES')
  47.   }
  48.   if (!isServerPrepared(server, true)) { throw new Error('FUCKING SHIT AINT PREPARED') }
  49.  
  50.  
  51. }
  52.  
  53. function getDelays(ns: NS, target: string, buffer: number = 100) {
  54.   const server = ns.getServer(target)
  55.   const player = ns.getPlayer()
  56.   const hackTime = ns.formulas.hacking.hackTime(server, player)
  57.   const growTime = ns.formulas.hacking.growTime(server, player)
  58.   const weakenTime = ns.formulas.hacking.weakenTime(server, player)
  59.  
  60.   const hack0 = weakenTime - hackTime
  61.   const grow0 = weakenTime - growTime
  62.   const weaken0 = weakenTime - weakenTime
  63.  
  64.   const hack = hack0
  65.   const hWeaken = weaken0 + buffer
  66.  
  67.   const grow = grow0 + (buffer * 2)
  68.   const gWeaken = weaken0 + (buffer * 3)
  69.  
  70.   if (!(((hackTime + hack) === weakenTime) || ((growTime + grow) === weakenTime))) {
  71.     throw new Error('Error in delay caluclations')
  72.   }
  73.  
  74.   const awaitTime = weakenTime + (buffer * 4)
  75.  
  76.   return {
  77.     hack, grow, hWeaken, gWeaken, awaitTime
  78.   }
  79. }
  80.  
  81. function buildHWGW(ns: NS, target: string, debug: Debugger) {
  82.   // calc related
  83.   const server = ns.getServer(target)
  84.   const player = ns.getPlayer()
  85.   const moneyToSteal = 0.9
  86.   if (!server.moneyAvailable || !server.moneyMax || !server.hackDifficulty || !server.minDifficulty) {
  87.     throw new Error('FUCKING SHIT DOESENT HAVE PROPERTIES')
  88.   }
  89.   if (!debug.isServerPrepared(server, true)) { throw new Error('FUCKING SHIT AINT PREPARED') }
  90.   const hackPercent = ns.formulas.hacking.hackPercent(server, player)
  91.   const hackThreads = Math.floor(moneyToSteal / hackPercent)
  92.   // - money decrease
  93.   const stolenMoney = server.moneyAvailable * (hackThreads * hackPercent)
  94.   server.moneyAvailable -= stolenMoney
  95.   // + sec increse
  96.   const hackSecurity = ns.hackAnalyzeSecurity(1)
  97.   server.hackDifficulty = server.hackDifficulty + (hackSecurity * hackThreads)
  98.   debug.out.info('hack performed')
  99.   //weaken
  100.   const weakenSecurity = ns.weakenAnalyze(1)
  101.   const securityToWeaken = server.hackDifficulty - server.minDifficulty
  102.   const hWeakenThreads = Math.ceil(securityToWeaken / weakenSecurity)
  103.   // - sec decrease
  104.   server.hackDifficulty = Math.max(server.hackDifficulty - ns.weakenAnalyze(hWeakenThreads), server.minDifficulty)
  105.   debug.out.info('weaken performed')
  106.  
  107.   //growing
  108.   const growThreads = ns.formulas.hacking.growThreads(server, player, server.moneyMax)
  109.   // + money increse
  110.   server.moneyAvailable = ns.formulas.hacking.growAmount(server, player, growThreads)
  111.   // + sec increse
  112.   const growSecurity = 0.004
  113.   server.hackDifficulty += growSecurity * growThreads
  114.   debug.out.info('grow performed')
  115.  
  116.   //weaken
  117.   const securityToWeaken2 = server.hackDifficulty - server.minDifficulty
  118.   const gWeakenThreads = Math.ceil(securityToWeaken2 / weakenSecurity)
  119.   // - sec decrease
  120.   server.hackDifficulty = Math.max(server.hackDifficulty - ns.weakenAnalyze(gWeakenThreads), server.minDifficulty)
  121.   debug.out.info('weaken performed')
  122.   debug.out.success('all operations performed')
  123.   debug.isServerPrepared(server, true)
  124.   // /calculations
  125.  
  126.   return {
  127.     hackThreads, growThreads, hWeakenThreads, gWeakenThreads
  128.   }
  129. }
Add Comment
Please, Sign In to add comment