Простой бот, который использует математику для выбора наиболее прибыльного обновления.
Как это работает
Бот предпринимает следующие шаги.
- Проверяет стоимость и рост производства всех возможных обновлений
- Вычисляет прибыльное соотношение каждого обновления
- Сортирует элементы по отношению к спускам
- Выбирает первый элемент
- Проверяет, если вы можете приобрести обновление сейчас, если не, он ждет, чтобы собрать деньги
- Проверяет, можете ли вы купить новый узел меньше, чем 30 секунды (Вы можете настроить на этот раз), если так, это покупает его
- Повторить…
Прибыльное соотношение = Рост производства / стоимость обновления
Рост производства = Производство после обновления / Текущее производство
Это руководство основано на моем предыдущем “Автоматизация для узлов хакнет”.
Как использовать
Сделать следующие шаги.
- Запустить терминал
- Введите ‘nano chacknet-bot.js’
- Скопируйте и вставьте код ниже в этот файл
- Сохраните файл (Ctrl + с)
- Вернуться к терминалу
- Введите ‘Запустить chacknet-bot.js’
/** @парам {НС} нс **/ экспортировать асинхронную функцию main(нс) { // helpers const getMoney = () => ns.getPlayer().деньги; const getProd = (уровень, баран, ядра) => (уровень * 1.5) * Math.pow(1.035, баран - 1) * ((ядра + 5) / 6); // your production multiplier const PROD_MULTIPLIER = ns.getHacknetMultipliers().производство; // Максимальное время ожидания для сбора денег для нового узла (по умолчанию 30 -е годы) const wating_time = ns.args[0] || 30; пока (истинный) { Const Catios = []; Пусть HacknetProduction = 0; // loop through all nodes for (Пусть индекс = 0; индекс < ns.hacknet.numnodes(); Индекс ++) { // Получить текущую статистику узла const { уровень, баран, ядра, производство } = ns.hacknet.getNoDestats(индекс); HacknetProduction += Производство; // Получить обновления стоимость const levelupgradecost = ns.hacknet.getlevelupgradecost(индекс); const ramupgradecost = ns.hacknet.getramupgradecost(индекс); const coreupgradecost = ns.hacknet.getcoreupgradecost(индекс); // Получить продурку. рост / Коэффициенты стоимости const levelupgraderatio = ((GetProd(уровень + 1, баран, ядра) * Prod_multiplier) - производство) / levelupgradecost; const ramupgraderatio = ((GetProd(уровень, баран * 2, ядра) * Prod_multiplier) - производство) / Ramupgradecost; const coreupgraderatio = ((GetProd(уровень, баран, ядра + 1) * Prod_multiplier) - производство) / CoreupGradecost; // Возможные обновления текущего узла const urdynodeupgrades = [ {соотношение: levelupgraderatio, расходы: levelupgradecost, Узел индекс: индекс, обновление: "уровень"}, {соотношение: Рамуппрарода, расходы: Ramupgradecost, Узел индекс: индекс, обновление: "баран"}, {соотношение: CoreUpgraderatio, расходы: CoreupGradecost, Узел индекс: индекс, обновление: "основной"} ]; // Протолкнуть обновления узлов тока ко всем соотношениям обновлений.push(...currentNodeupGrades); } // Получите наиболее прибыльное обновление { расходы, Узел индекс, обновление } = catios.sort((а, б) => B.Ratio - A.Ratio)[0]; // wait until you have the money for upgrade while (getmoney() < расходы) { жду нс.сон(1); } // Выполните переключатель обновления (обновление) { случай "уровень": wait ns.hacknet.upgradelevel(Узел индекс); перерыв; случай "баран": wait ns.hacknet.upgraderam(Узел индекс); перерыв; случай "основной": ждать ns.hacknet.upgradecore(Узел индекс); перерыв; по умолчанию: продолжать; } // Проверьте, сможете ли вы приобрести новый Node const booksenodecost = ns.hacknet.getpurchasenodecost(); Const MissingMoneyFornewNode = BookASENODECOST - getmoney(); если (MissingMoneyFornewNode > 0 && MissingMoneyFornewNode < HacknetProduction * Wating_time) { // Если вам нужно ждать узла покупки меньше, чем wating_time (в секундах) program waits to collect money while (getmoney() < Покупка) { жду нс.сон(1); } ns.hacknet.purchasenode(); } // sleep 1ms to prevent crash because of infinite loop await ns.sleep(1); } }
Вы можете настроить время ожидания узла покупки (по умолчанию 30 -е годы) передавая дополнительный аргумент сценария. Например:
Запустите chacknet-bot.js 120
Это все, чем мы делимся сегодня для этого. Битбернер гид. Это руководство было первоначально создано и написано Syw1. На случай, если нам не удастся обновить это руководство, вы можете найти последнее обновление, следуя этому связь.