Dit is een geautomatiseerd script voor midgame (of SF1+ games) dat servers koopt en opnieuw koopt. Het heeft bewerkbare variabelen voor extra maatwerk.
Over deze Bot
Dit is een bot die:
- Koop servers met RAM die u opgeeft (standaard is de helft van uw thuis-RAM, minimaal 32 GB)
- Upload en voer een script naar keuze uit
- Sjabloon voor het uploaden van extra scripts naar keuze (bijv. als uw hoofdscript 3x scripts aanroept zoals het mijne doet)
- Als u max. servers (25) heeft en deze zwak zijn (<25% van uw thuis-RAM) en voldoende geld hebben om te upgraden, zal het een ja/nee-vak vragen om ze te upgraden. Dit verwijdert en koopt opnieuw.
Vanwege de logica binnenin is het behoorlijk fors met 13.3 GB RAM vereist, en als zodanig is het niet echt geschikt voor een zeer vroege game.
Er is enige technische basiskennis vereist om een paar regels code aan uw opstelling aan te passen. Lees de how-to aandachtig door.
U kunt een rebuy van een server forceren door deze uit te voeren met het 'f'-argument (dwz "run servers.js f")
Het script
// Serveraankoopscript voor Bitburner - https://danielyxie.github.io/bitburner/ , geschreven door steamid/Meng // Loopt tot tevreden, zal servers opnieuw kopen, geld is voldoende en de server is slechter dan 25% van het ram. Uitvoeren met 'f'-argument om rebuy te forceren // Versie 1.22 // Extra opmerkingen en MAIN_SCRIPT-variabele toegevoegd zodat de code bruikbaar is voor anderen export async-functie main (ns) { // ~~~~~~~~~Bewerkbaar variabelen~~~~~~~~~~~ const SVRNAME = "plex"; // Welke hostnaam uw gekochte servers hebben const MIN_RAM = 32; // Minimum RAM dat je wilt kopen voor een server const SVR_RAM_RATIO = 2; // Doel-RAM voor server is "Home" RAM, gedeeld door SVR_RAM_RATIO, must = macht van 2 (0.5, 1, 2, 4...). bv. '2' is 50% van het thuis-RAM const MAIN_SCRIPT = "breaker.js" // Naam van je hoofdscript dat je wilt uploaden // ~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~ laat currentServers = ns.getPurchasedServers(); laat ram = berekenRam(); // Berekent hoeveel RAM te kopen voor de server let i = currentServers.length; const serverMax = 25; // hardcoded max-servers vanaf Bitburner v1.3 // Controleer en zorg ervoor dat servers scripts uitvoeren (herstel na een gedwongen herstart) // als de server geen scripts uitvoert, overschrijf dan de bestaande breaker en voer het uit. ns.print('Scripts starten op bestaande servers...') for(let x = 0; x < currentServers.length; x++){ if (!ns.isRunning(MAIN_SCRIPT, currentServers[x])){ wacht op ns. scp(MAIN_SCRIPT, huidigeServers[x]); ns.exec(MAIN_SCRIPT, huidigeServers[x], 1); } }; // Serveraankoopinfo const serverPriceInfoText = (ns.getPurchasedServerCost(ram) / 1000000).toFixed(2); ns.toast(`Serverprijs is ${serverPriceInfoText} M`, "info"); ns.print(`staat op het punt servers te kopen @ ${ram}gb voor ${serverPriceInfoText}`); wacht op ns.sleep (15000) // probeer dan continu servers aan te schaffen totdat we het maximum hebben bereikt while (i < serverMax) { // Controleer of we genoeg geld hebben om een server te kopen if (ns.getServerMoneyAvailable("home" ) > ns.getPurchasedServerCost (ram)) { // indien voldoende geld, server kopen, noem maar op, scripts uploaden en uitvoeren MAIN_SCRIPT let hostname = ns.purchaseServer (SVRNAME + i, ram); wacht op ns.scp (MAIN_SCRIPT, hostnaam); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Voeg eventuele extra scripts toe die je hier wilt uploaden, of verwijder de regels // ~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~ wacht op ns.scp("hackscript.js", hostnaam); wacht op ns.scp("growscript.js", hostnaam); wacht op ns.scp("weakscript.js", hostnaam); // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ns.exec(MAIN_SCRIPT, hostnaam, 1); ns.toast(`Server ${hostname} is gekocht`, "succes") ++i; } else { ns.print(`kan nog niet kopen - prijs is `+ ns.getPurchasedServerCost(ram)) wacht op ns.sleep(20000) } } // end of while (ns.getPurchasedServerCost(ram) * 13)){ / / als er voldoende geld is voor upgrade.. laat areYouSure = wachten op ns.prompt(`wil je servers opnieuw kopen?
Hoe te gebruiken
Hier leest u hoe u dit script kunt gebruiken
- terminal > nano “servers.js”
- plak de onderstaande code in
- BEWERK DE CODE – Lijn 13 + Lijnen 45-50
- Regel 13: Wijzig "breaker.js" in de bestandsnaam van uw hoofdscript die u op de externe server wilt uitvoeren.
- Regels 45-50: Als je meer scripts wilt uploaden, pas dan ook deze regels aan, als je ze niet nodig hebt, verwijder ze dan tussen de regels. Merk op dat deze niet automatisch worden uitgevoerd, ze gaan ervan uit dat je hoofdscript ze aanroept. Als je ze ook moet uitvoeren, voeg dan extra regels van toe
ns.exec("uwScriptNaamHier.js", hostnaam, 1);
- besparen
- terminal > run servers.js
Opmerking: als u het bestand servers.js niet een naam geeft, wijzigt u regel 70 in hoe u het bestand ook noemt, anders werkt de rebuy-functie niet.
Dat is alles wat we hiervoor vandaag delen Bitbrander gids. Deze handleiding is oorspronkelijk gemaakt en geschreven door Meng. Als we deze handleiding niet kunnen bijwerken, kunt u de laatste update vinden door deze te volgen link.
Ik heb net meerdere minuten besteed aan het oplossen van de syntaxisfouten voordat ik in ieder geval delen ervan kon begrijpen. Ik weet niet of de website het verprutst heeft of dat het een gebruikersfout was, maar op deze manier kan niemand het uitvoeren. bijna alle ifs worden bijvoorbeeld uitgecommentarieerd. de regeleinden zijn een puinhoop, als die er zijn. Meerdere ; ontbreken. Eerst dacht ik dat je probeerde te schrijven terwijl het anders was (bleek een ander commentaar te zijn als). Waarom gebruik je niet gewoon let scriptArray = [“script1.js”, “script2.js”,…,”scriptn.js”]; te gebruiken in ns.scp(scriptArray, hostnaam);? Heeft één scp nodig in plaats van 3 tijdens het uploaden van elk aantal scripts tegelijk. En wat probeer je in godsnaam te doen in de laatste lus? de voorwaarde (één waarde vermenigvuldigd met 13) zou altijd waar zijn als er geen commentaar was. Dit script zou constant spammen met "wil je servers opnieuw kopen?", waarschijnlijk meteen al het geld van de spelers uitgevend. Misschien moet je je bij je scripts houden aan reddit, daar krijg je direct feedback en suggesties voor verbeteringen...