moriakaice / bitburner

Collection of scripts for https://danielyxie.github.io/bitburner/
ISC License
114 stars 145 forks source link

v1.4.0 - "buying / upgrade" Server -loop #24

Open DaZzler86 opened 2 years ago

DaZzler86 commented 2 years ago

Problem with "buying / upgrade" Server -loop

playerServers.ns: [23:39:22] Bought new server: pserv-64-c63243d3-1307-45af-93b0-f03efb5aa2b5 (64 GB) playerServers.ns: [23:39:28] Bought new server: pserv-64-16611729-a8bf-49e9-891a-ac47c427d321 (64 GB) playerServers.ns: [23:39:38] Bought new server: pserv-64-9ac067f4-60ac-4eaa-a179-6e4036f25e79 (64 GB) playerServers.ns: [23:39:43] Bought new server: pserv-64-5d74649e-3ec8-4f69-a26d-8671867d4b7c (64 GB) playerServers.ns: [23:39:53] Bought new server: pserv-64-dc0d664d-5560-454d-9ee2-c6bcda3ad0de (64 GB) playerServers.ns: [23:39:58] Bought new server: pserv-64-51bd578f-fe8e-446c-b60d-b984ef51d9f3 (64 GB) playerServers.ns: [23:40:09] Bought new server: pserv-64-a063f882-5ea6-4099-b59c-eb2357ecbfd6 (64 GB) playerServers.ns: [23:40:14] Bought new server: pserv-64-612ca89a-6266-4f99-b2c0-feabeb87bbad (64 GB) playerServers.ns: [23:40:24] Bought new server: pserv-64-a592f07d-53a5-47e3-9756-e37ce75d6076 (64 GB) playerServers.ns: [23:40:29] Bought new server: pserv-64-3d05e9a1-7bc9-45bf-90e9-d25a4733d4da (64 GB) playerServers.ns: [23:40:39] Bought new server: pserv-64-b0011b6a-95ed-41dc-a21d-4dfa629f79d2 (64 GB) playerServers.ns: [23:40:45] Bought new server: pserv-64-f0d69ff4-d15b-4e50-ab79-c5ea4b08c70d (64 GB) playerServers.ns: [23:40:55] Bought new server: pserv-64-d6336f2f-ba16-48bc-906a-7983b2c19a77 (64 GB) playerServers.ns: [23:41:00] Bought new server: pserv-64-c35748f6-12ff-435a-9c1f-c9a283745e10 (64 GB) playerServers.ns: [23:41:10] Bought new server: pserv-64-e2a5dddc-fae4-4eab-bac7-c39f1a60f649 (64 GB) playerServers.ns: [23:41:15] Bought new server: pserv-64-b54a4db8-5c66-441d-bef9-28cb4fb3560e (64 GB) playerServers.ns: [23:41:26] Bought new server: pserv-64-be7eb740-289c-4ade-a8f8-0edb6e0202ae (64 GB) playerServers.ns: [23:41:36] Bought new server: pserv-64-219844df-ed41-4c00-a08b-0fdb83778be6 (64 GB) playerServers.ns: [23:41:41] Bought new server: pserv-64-af5d677b-eeae-43d4-a012-e85b88cb066e (64 GB) playerServers.ns: [23:41:51] Bought new server: pserv-64-736db45e-1790-4fcd-8c95-02235456e3d9 (64 GB) playerServers.ns: [23:41:56] Bought new server: pserv-64-2bcf40e8-dd1e-404f-a0c5-0bd384e85efd (64 GB) playerServers.ns: [23:42:07] Bought new server: pserv-64-336fff26-ecc6-41df-8f32-1624b545d9ad (64 GB) playerServers.ns: [23:42:12] Bought new server: pserv-64-065c5620-b15b-4a1c-99e3-99bd44fda0b7 (64 GB) playerServers.ns: [23:42:22] Bought new server: pserv-64-f309b7dd-77ee-403b-918b-8378f4245ef8 (64 GB) playerServers.ns: [23:42:27] Bought new server: pserv-64-6c21f37b-5d9a-4761-b596-1a3c6cbaa1d8 (64 GB) playerServers.ns: [23:42:38] Bought new server: pserv-64-356e88b5-6132-4fa4-93ef-08a71920dcdd (64 GB) playerServers.ns: [23:42:43] Bought new server: pserv-64-745557e1-9888-4345-93a4-ca931fb63fb2 (64 GB) playerServers.ns: [23:42:53] Bought new server: pserv-64-68e0a185-336c-4be4-ba22-4686c520fb57 (64 GB) playerServers.ns: [23:42:58] Bought new server: pserv-64-b05b9640-0477-440a-9a23-cdec00f421a1 (64 GB) playerServers.ns: [23:43:08] Bought new server: pserv-64-c480c030-32f5-45bd-9980-2f275e37a35d (64 GB) playerServers.ns: [23:43:13] Bought new server: pserv-64-8e0bf499-d8cd-49e6-b7e2-e2a754220e7b (64 GB) playerServers.ns: [23:43:24] Bought new server: pserv-64-cfaea805-5911-40d4-b29b-58668cb7a4aa (64 GB) playerServers.ns: [23:43:34] Bought new server: pserv-64-033c9366-7ea8-4f9b-ab6c-952ae96dbf7c (64 GB) playerServers.ns: [23:43:39] Bought new server: pserv-64-91fade1b-e48c-4191-9cab-78ae40475f75 (64 GB) playerServers.ns: [23:43:49] Bought new server: pserv-64-390f2364-3756-48c6-a485-8804ba27fdd3 (64 GB) playerServers.ns: [23:43:55] Bought new server: pserv-64-0b22e2e5-f99b-4e9a-94be-43509a32713c (64 GB) playerServers.ns: [23:44:05] Bought new server: pserv-64-f32683c6-b79c-445a-b309-d6b0ab794f7f (64 GB) playerServers.ns: [23:44:10] Bought new server: pserv-64-e5da1ab9-b113-4583-8aac-12428abd08ef (64 GB) playerServers.ns: [23:44:20] Bought new server: pserv-64-54b779bb-7240-4bfd-95da-c6eb0e80ba54 (64 GB) playerServers.ns: [23:44:25] Bought new server: pserv-64-bff0ecad-fb89-442b-8aa5-0b06102b9354 (64 GB)

mainHack.ns: [23:44:31] Selected omega-net for a target. Planning to hack the server. Will wake up around 23:49:49 mainHack.ns: [23:44:31] Stock values: baseSecurity: 32; minSecurity: 11; maxMoney: $133,526,182 mainHack.ns: [23:44:31] Current values: security: 11; money: $126,740,011 mainHack.ns: [23:44:31] Time to: hack: 00:01:19; grow: 00:04:13; weaken: 00:05:17 mainHack.ns: [23:44:31] Delays: 00:03:27 for hacks, 00:00:48 for grows mainHack.ns: [23:44:31] Cycles ratio: 1583 hack cycles; 0 grow cycles; 67 weaken cycles

playerServers.ns: [23:44:36] Bought new server: pserv-64-3c9dd513-c96b-42a7-9fcd-864e7b7e6b10 (64 GB) playerServers.ns: [23:44:41] Bought new server: pserv-64-c2459b5b-5c76-42da-a12e-42dc76161e09 (64 GB) playerServers.ns: [23:44:51] Bought new server: pserv-64-c06e4a88-1cf5-4e10-8df4-58240caf73cc (64 GB) playerServers.ns: [23:44:56] Bought new server: pserv-64-362da79c-681c-46cd-af54-cb22c08f79f0 (64 GB) playerServers.ns: [23:45:06] Bought new server: pserv-64-6c257db4-1d79-425f-8958-a526890de51a (64 GB) playerServers.ns: [23:45:12] Bought new server: pserv-64-b150c365-2ba7-408d-8af5-46e43ab81f32 (64 GB) playerServers.ns: [23:45:22] Bought new server: pserv-64-fee97568-1c80-4792-89f5-47a6c1ff01ce (64 GB) playerServers.ns: [23:45:32] Bought new server: pserv-64-f8c6601d-3d83-4596-9a69-89aef708d935 (64 GB) playerServers.ns: [23:45:37] Bought new server: pserv-64-cdc8a38a-f629-4660-a657-88ad1c09f537 (64 GB) playerServers.ns: [23:45:48] Bought new server: pserv-64-658877bb-4b43-4d96-b057-54e2af3e9454 (64 GB) playerServers.ns: [23:45:53] Bought new server: pserv-64-b96bb342-8f8d-41fb-89d2-2216f83fe03a (64 GB) playerServers.ns: [23:46:03] Bought new server: pserv-64-5700be20-7a3e-49dc-b731-603afd3a37ae (64 GB) playerServers.ns: [23:46:08] Bought new server: pserv-64-6c9516b9-9555-4fea-836c-d30f8967db45 (64 GB) playerServers.ns: [23:46:18] Bought new server: pserv-64-a0628f33-1b7e-4ece-8af6-8152d345260c (64 GB) playerServers.ns: [23:46:23] Bought new server: pserv-64-7dfc7279-108e-49c1-83b5-d8b85cb9c385 (64 GB) playerServers.ns: [23:46:34] Bought new server: pserv-64-8e10ebd3-c2ed-4713-9a60-5b544a66a7c3 (64 GB) playerServers.ns: [23:46:39] Bought new server: pserv-64-a61e4338-45e5-46fd-a1b3-e1192c02287c (64 GB) playerServers.ns: [23:46:49] Bought new server: pserv-64-ed33c06a-b9ef-4be1-b627-ddfeefa17d7d (64 GB) playerServers.ns: [23:46:54] Bought new server: pserv-64-68724d78-c772-4753-aad7-5854e47a2f29 (64 GB) playerServers.ns: [23:47:05] Bought new server: pserv-64-fa8d91ac-efdf-4e3d-abf3-92018e8d0443 (64 GB) playerServers.ns: [23:47:10] Bought new server: pserv-64-5af79f29-9225-4e33-a040-d920a63045e9 (64 GB) playerServers.ns: [23:47:20] Bought new server: pserv-64-ec4c3533-533b-4c5d-876d-529eb98c9dcb (64 GB) playerServers.ns: [23:47:30] Bought new server: pserv-64-6625758e-611a-49a8-b366-292c6a0bfa4f (64 GB) playerServers.ns: [23:47:35] Bought new server: pserv-64-2d2622c9-6355-45fd-b31a-a91ad3a8291e (64 GB) playerServers.ns: [23:47:46] Bought new server: pserv-64-521b2947-e704-47e3-ba5c-321198c51565 (64 GB) playerServers.ns: [23:47:51] Bought new server: pserv-64-a5540db5-963f-4b02-9b0e-a323f642b19f (64 GB) playerServers.ns: [23:48:01] Bought new server: pserv-64-c4962728-e05f-46d6-b061-2eb801e6c53b (64 GB) playerServers.ns: [23:48:06] Bought new server: pserv-64-61ddf6d1-4a36-4aab-aa6c-afa4b4df4fca (64 GB)

darklingduck commented 2 years ago

I found the issue. the issue is in the purchase of the upgraded server. He is creating a new UUID for the server instead of updating with the old UUID. So the new server is not getting added to the list of purchased servers. I am looking into a fix for this.

darklingduck commented 2 years ago

Here is the fix:

`

        if (targetRam > ns.getServerMaxRam(purchasedServers[0])) {
        if (ns.getServerMoneyAvailable('home') * settings.totalMoneyAllocation >= targetRam * settings.gbRamCost) {

          let myOldUUID = purchasedServers[0].substring(12,purchasedServers[0].length)
          let hostname = `pserv-${targetRam}-${myOldUUID}`

          await ns.killall(purchasedServers[0])
          await ns.sleep(10)
          let serverDeleted = await ns.deleteServer(purchasedServers[0])

           if (serverDeleted) {
            hostname = await ns.purchaseServer(hostname, targetRam)

            if (hostname) {
              ns.tprint(`[${localeHHMMSS()}] Upgraded: ${purchasedServers[0]} into server: ${hostname} (${targetRam} GB)`)

              purchasedServers[0] = hostname
              updateServer(ns, serverMap, hostname)
              didChange = true
            }
          }
        }

`

Just locate the section and update the code. I pulled the old UUID and added it to the new host name. Then I updated the Server name in the purchasedServers array so that the updateServers function would be able to find it.

ComictypX commented 2 years ago

Thanks for your investigations @darklingduck! Could you paste/upload your whole playerserver.js file? For me the script still keeps buying servers.

MarsDS commented 2 years ago

The problem ist the calculation of the RAM. The script calculates the RAM of a purchased server by add the free RAM and the used RAM by a deprecated function. This cause the script to calaculate f.e. 63.5 GB RAM instead of 64. This again causes an upgrade loop, because the script tries to replace the 63.5 GB server by a 64 GB server. Buying server manually or by another script will cause the same issue just with different values.

ComictypX commented 2 years ago

In which BitNodes are you guys? I'm in BitNode 3.

For me, it was a bug in the Ram Cost calculation: GB * 550000 works in BitNode 1 just fine, but later in other BitNodes there could be multipliers which makes ram more expensive and so my script tried to upgrade a server (deleted the target server prior to this) but could not afford the new one. So it switched to the buy mode, buys a new server and repeats this steps. See getPurchaseServerCost(ram: number)

I fixed this in my dev-repo, please give it a try: https://github.com/ComictypX/bitburner/blob/dev/src/playerServers.js