Общий раздел > Планирование и развитие

DfHack Workflow + Job (автоматизация производства)

(1/7) > >>

Andys:
Переделал гайд под новые реалии (дфхак добавил менюшки в дф)

Основное применение плагина workflow
Автоматическое производство той или иной вещи - плагин подсчитывает кол-во  вещей в крепости, и при необходимости включает работу по их производству.
Позволяет указать качество вещи (да-да, можно заказать 10 мастерворк брони и не следить вручную за кузнецом)
Пример - поддерживать кол-во выпивки на уровне 150-200 единиц
Внимание! Плагин после включения не даст вам удалять повторные работы, для удаления таких работ надо снять повтор и потом удалить.


Основное применение плагина job
Изменение ресурсов, которые будут использованы в той или иной работе.
Примеры - можно назначить тип растения для производства выпивки, ингредиенты для приготовления еды, материал для пошива одежды итп

Терминология
Во избежание непоняток, термины, которые использую в описании:
Меню мастерской – по кнопке q выбрана мастерская и справа светится список работ.
Работа – одно из заданий, которое светится в мастерской.
Повторная работа – поставленная на повтор (с буквой R)
Отключенная работа – неактивная, с буквой S
Производство – одна из задач производства некоей вещи внутри плагина Workflow
Материал и тип работы – имеются в виду материал и тип основного реагента (например, в работе по производству блоков, где плагином job настроили входящий материал гранит, автоматом на выходе будут получаться только гранитные блоки)

Вгимание!
Рекомендуется включить в дфхак хоткеи для этих плагинов, без этого не сможете войти во те меню, которые дфхак добавил внутри дф.
Надо найти в папке дф файл dfhack.init-example, скопировать его в dfhack.init, и удалить те строки, которые вам не нравятся или не нужны (в нем есть хоткеи и фиксы, в общем полезные).
Необходимо оставить строчки -
--- Код: ---# workshop job details
keybinding add Alt-A@dwarfmode/QueryBuilding/Some/Workshop/Job gui/workshop-job

# workflow front-end
keybinding add Alt-W@dwarfmode/QueryBuilding/Some/Workshop/Job gui/workflow
keybinding add Alt-W@overallstatus "gui/workflow status"
--- Конец кода ---


Плагин Job подробноСпойлерРедактирует ресурсы, которые ожидаются на входе той или иной работы.
Можно задать тип предмета (например, в кухне ингредиент – яйца, мясо, итп) и материал (на входе материал – rope reed нитки, в итоге будут шиться носки только из этой ткани)
Некоторые вещи глючат (например, я не смог в приготовлении еды заставить использовать вино)

Использование
0. По кнопке q навестись на мастерскую, выбрать нужную вам работу и дальше два варианта (через меню или через комстроку) -
1. через меню - нажать Alt+A, по кнопке i задается тип ресурса на входе, по кнопке m – материал этого ресурса. При выборе типа и материала можно искать фильтром.
2. через комстроку есть команды:
2.а. job – без параметров показывает свойства работы. Показывает все ингредиенты с их ограничениями, где написано None там нет ограничения – подходит всё. Флаги поменять нельзя, они зашиты в реакцию (например в приготовлении еды у первого ингредиента светится SOLID – не может быть жидкостью)
2.б. job item-material <номер> <материал> - задает для такого-то по счету ингредиента требуемый материал. Иногда наобходимо задать под-материал (в примере 3 ниже)
2.в. job item-type <номер> <тип> - аналогично, но задает тип вещи (и опционально - подтип через :, например SHOES:ITEM_SHOES_SOCKS)

Примеры команд
Производство определенного бухла -
job item-material 1 MUSHROOM_HELMET_PLUMP – данная работа Brew Drink будет производить только вино из плампов
job item-type 1 MEAT поменяет работу в кухне, чтобы первым ингредиентом обязательно было мясо. Кончится мясо – работа встанет.
job item-material 1 PLANT:REED_ROPE:THREAD – будет шить вещь только из Rope Reed. Тут задается ещё подтип материала – нитки из rope reed, если задать без этого то не сработает.[свернуть]
Плагин Workflow подробноСпойлерОбщая логика
1. В плагин вносятся задачи по производству того или иного предмета, опционально можно задать подтип и материал.
2. Плагин сканирует список работ в крепости, выбирает те, которые производят данный предмет.
3. Дальще по необходимости плагин сам включает/отключает эти работы, поддерживая заданное кол-во продукции в крепости.

Работы в мастерских вы создаете сами вручную, их плагин не делает. Обязательные требования к работам, чтобы плагин их подхватил:
1. Работа должна быть повторной
2. Тип и материал производства в плагине должен точно совпадать с работой или включать их в себя (как множество).
Например: работа производит каменные блоки, в ней прописан материал гранит (плагином job), в Workflow у нас есть производство просто блоков, без материала. Это работает, поскольку множество "гранитные блоки" входит в множество "просто все блоки".
И наоборот – работа без указания материала, просто блоки, а в производстве задан материал – гранитные. Тут плагин будет ругаться “не найдена подходящая работа”, нужно либо в работе прописать материал гранит, либо в производстве убрать материал


Использование
При первом использовании хоткея Alt+W плагин включается (выдаст окошко в дф), иначе в комстроке надо набрать команду workflow enable. После этого в игре он включен, если доживете до сохранения то не нужно при загрузке включать его.

Просмотр списка производств – два варианта как это сделать, через меню и комстроку:
1. кнопками Alt+W в основном виде крепости (вне всех меню). Относительно наглядные табличка и цифры.
2. командой workflow без параметров в комстроке дфхака. Выводит чуть более подробный список, показывает также список привязанных к производствам работ и их статус (включена работа или нет).

Добавление нового производства – три варианта:
1. самый удобный и быстрый вариант - войти в меню мастерской, выбрать нужную работу, и нажать Alt+W. Плагин покажет (если уже есть) производство, к которому привязана эта работа, кол-во вещей, и справа снизу будет список хоткеев - создание, удаление, изменение количеств итп.
2. войти в глобальный список производств (через Alt+W в основном виде вне всех меню), там создать новое (хоткеи написаны снизу экрана) и задать ему все параметры (не рекомендуется, поскольку муторно, но зато можно вручную задать все параметры)
3. в комстроке командой workflow <amount/count> <вещь> <кол-во> <разница>Спойлерпараметры такие:
amount или count – что считать, кол-во стэков или единиц вещей
вещь – нужно точно указать тип (по желанию и подтип через ":"), той вещи, которую хотите производить.
Кодировка вещи: СпойлерОбщее обозначение вещи состоит из 4-х компонент, записывается в комстроке как <тип вещи>/<тип материала>/<точный материал>/<качество>
Параметры можно пропускать, в этом случае просто ничего не пишете между //
Тип вещи может быть с указанием подтипа (см. примеры с кувшинами или одеждой)
Тип материала - это "общий", вроде CLOTH, LEATHER, WOOD
Точный материал - это с указанием конкретного растения/камня/итп, вроде REED_ROPE, если требуются после него через : пишется подтип материала - к примеру REED_ROPE:THREAD (не сырое растение, а нитки сделанные из rope reed)
Качество - думаю что означает "такое или выше" качество предметов (сам с ним не работал ещё)
Если несколько непонятно как описать ту или иную вещь, можно сделать так: навестись в дф на нужный предмет, и в дфхаке запустить команду changeitem info, она покажет все параметры вещи.
Если в конце обозначение идут пустые /, то их можно не писать (см. в примерах ниже, иногда вообще пишется тип вещи - просто "еда" или "блоки"[свернуть]кол-во и разница – задают сколько производить. Кол-во – базовое значение, в + и – от которого отсчитывается разница (например 100 20 дают диапазон 80-120)[свернуть]Удаление производства
- в списке производств плагина хоткеем (насколько помню X, написан на экране)
- либо в комстроке - workflow unlimit <вещь>, можно сделать глобально workflow unlimit-all для удаления всех.
Редактирование производства - редактировать можно только количества, для изменения типа вещи и материала можно только удалить и создать заново
- в списке плагина (alt+W) справа сверху хоткеи для изменения выбранного производства
- в меню мастерской на нужной работе нажатием alt+W
- либо в комстроке запустить заново создание точно такой же вещи, с новыми количествами (запустить workflow для списка, скопировать определение вещи, запустить workflow <amount/count> <скопированная вещь> <новые количества>)

Примеры командСпойлерworkflow amount DRINK 200 50
workflow amount FOOD 200 50 - производит еду и бухло, поддерживая кол-во 150-250 (поскольку amount, то количество единиц выпивки/еды, а не кол-во их стэков)
workflow count BOX/CLOTH 20 5 - Мешки из ткани, 15-25 штук
workflow count TOOL:ITEM_TOOL_LARGE_POT 20 10 - Кувшины, 10-30 штук
workflow amount AMMO:ITEM_AMMO_BOLTS/BONE 1000 200 - Костяные болты, 800-1200 штук
workflow count SHOES:ITEM_SHOES_SOCKS//REED_ROPE:THREAD 30 10 - будет производить носки из определенного материала (rope reed), поддерживая их кол-во на складе  в пределах 20-40 штук. Для работы пошива носокв мастерской при этом надо обязательно выполнить job item-material 1 PLANT:REED_ROPE:THREAD, чтобы вещь в производстве точно совпадала с результатом работы, иначе плагин не увидит эту работу.
workflow count SHOES:ITEM_SHOES_SOCKS///Masterful 30 10 - а тут мы удалили материал, но зато добавили условие что нас интересуют только мастеровские вещи (по факту производить-то будут какие угодно, но плагин все не-мастеровое будет игнорировать)[свернуть][свернуть]
Заметки
Некоторые прошитые в коде реакции невозможно автоматизировать никакими методами. К примеру – покраску одежки. Саму работу по покраске контролировать плагином нельзя, можно только включить повтор и сделать автопроизводство мешков и краски в мешках, и надеяться что их будет с избытком для того, чтобы работа покраски не встала от недостачи материалов.

Личные наработки
Одежда – мастерская портного должна быть настроена склаывать все на один склад, на этом складе включена опция Take from links only.
Аналогично примеру 5 набиваем мастерскую работами по всем частям одежды, она складывается только на этот склад, кому надо – приходят и берут.
Производство стеклянного оружия для ловушек – строятся 3-4 стеклодувни (не магма), им назначается задание сбора песка и на повтор.
Основная стеклоплавильня на магме, настроены два производства – песок, 50-100 мешков, и зазубренные диски 50-100 штук. Когда все ловушки построены, излишек можно продать


Старый пост под катом, удалять насовсем на всякий случай не будуСпойлерОтносительно недавно открыл для себя, и с этой опцией стало намного меньше микроменеджмента и ошибок.
Общее назначение - производство и поддержание заданного количества того или иного продукта/вещей.
Поскольку почти полдня потратил чтобы вникнуть в принцип действия, то поделюсь, возможно сэкономит вам немного времени.


Включение плагина -
в dfhack ввести workflow enable
После этого в мастерских все работы с повтором (R) становятся перманентными, их нельзя удалить. Для удаления нужно вначале отключить повтор этой работы (чтобы буквы R не было), и только потом удалить окончательно

Основное применение плагина workflow
Автоматическое производство той или иной вещи - плагин подсчитывает кол-во неиспользуемых вещей, и при необходимости включает работу по их производству
Пример - поддерживать кол-во выпивки на уровне 150-200 единиц

Основное применение плагина job
а. Изменение ресурсов, которые будут использованы в той или иной работе.
Примеры - можно назначить тип растения для производства выпивки, ингредиенты для приготовления еды, материал для пошива одежды итп

Синтаксис workflow
У каждой задачи задаются есть следующие параметры -
1. Тип вещи (+ опционально материал) - к примеру , "носки, из материала - шерсти лламы"
2. Требуемое кол-во (amount или count. amount считает общее кол-во вещей, count - только количество стэков)
3. Разрыв (gap) - некий "буфер" количества, чтобы работа не включалась/отключалась каждый раз когда кто-то сделал глоток выпивки. Требуемое кол-во увеличивается в + и - на эту цифру, и по достижению этих пределов начинается и останавливается производство. К примеру, 500 gap 100 - значит что начинать производить когда станет 400, перестать производить когда будет 600 единиц этой вещи.
4. Работы, которые производят данную вещь - вы их не назначаете, их нужно создать в мастерских (можно не в одной), и поставить на повтор.
Определение вещи в работе должно абсолютно точно совпадать с определением вещи, которое вы пишете в workflow (в пункте 1 выше).
То есть, если у вас работа производит просто носки, без указанного (командой job) материала, а в команде workflow вы укажете материал "шерсть", то эта работа не подойдет под данное производство (в итоге, у вас будут бесконечно шить носки их чего попало, а workflow будет ругаться "не могу произвести шерстяные носки").

a. вывести состояние-список вещей и работ
workflow просто, без параметров, либо workflow list
В списке идет перечень всех заданных производств (CONSTRAINT: вещь, ограничение), строкой ниже - текущее кол-во, и после - список работ, которые производят эту вещь.
Пример произвдства еды (требуется 500, "буфер" - 100, в наличии 471 поэтому еда не производится (в кухне была создана одна работа, её плагин приостановил - suspended)

--- Код: ---Constraint FOOD amount 500 (gap 100)
  items: amount 471; 24 stacks available, 6 in use.
  job 3703: PrepareMeal (suspended)
--- Конец кода ---
workflow jobs -
выдает список всех найденных в крепости работ (помните - только повторяющихся, с другими плагин не работает)

б. добавить новую вещь в список производства
Во-первых, мы должны точно указать тип вещи, если он не совпадет с тем, что производится то будет пшик.
Надежнее всего сделать следующим образом (ниже, спасибо Arano-kai)
Далее, вводим в dfhack команду workflow [amount/count] [вещь] [кол-во] [буфер]
Если нужно в будущем поменять - то необходимо будет абсолютно точно вводить обозначение вещи, в этом удобнее пользоваться workflow list-commands и копированием/вставкой
Самый простой пример -
workflow amount DRINK 200 50   - поддерживать количества бухла на 150-250 единиц (200+50 = 250 - макс, 200-50 = 150 - минимум).
Когда бухла станет < 150 - автоматом включатся (Enable) все работы в пивоварнях, которые производят бухло. Если таких работ нет - то плагин будет ругаться "не могу произвести DRINK"
Когда бухла станет > 250 - работа будет приостановлена (S)

в. удаление производства
workflow unlimit [вещь] - удалить одну вещь. Должно в точности совпасть определение вещи с тем что было указано ранее при создании
workflow unlimit-all - очистить весь список

г. создание скриптов workflow
Во-первых, напоминание - очень громадные скрипты "на все случаи жизни" изначально вредны. Для того чтобы другому человеку стал полезен ваш скрипт, необходимо чтобы у него был примерно тот же уровень населения, примерно те же ресурсы, те же запросы и нужды. Если я люблю производить много муки - то другому она может быть совершенно не нужна и только занимать мешки.
Имо, наиболее вероятное применение - выгрузка своих удачных наработок и загрузка отдельных строчек в другой игре (через копирование/вставку).
workflow list-commands - выдает на экран список команд, которые задают текущий список производств. Можно выделить как текст и сохранить.
script [имя файла] - загрузить в дфхак и выполнить все команды из этого файла.

д. использование job
1. Подсвечиваем курсором какую-то работу в мастерской
2. Переключаемся в дфхак, набираем job. Получаем список "ингредиентов", которые используются на входе этой работы.
Input Item 1: тип вещи
material: материал, обычно в начальных работах он none - то есть используется все подходящее
flags: тут могут быть ограничения на вещь, например для алкоголя требуется distillable, для еды требуется solid итп. Этот параметр мы не меняем
3. меняем материал, из которого будет производиться вещь -
job item-material [номер игредиента] [материал]
Обозначение материала мы берем аналогично как выше брали обозначение вещи - к примеру, наводим на кусок ткани из rope reed, выполняем changeitem info, получаем material: PLANT:REED_ROPE:THREAD, это и вводим как обозначение - мы получим что эта работу будет производить вещи только из rope reed.
4. в некоторых случаях (выпивка) потребуется вдобавок к материалу однозначно задать тип вещи, об этом предупредит плагин при вводе item-material
делается аналогично материалу, командой job item-type [тип вещи]

Примеры
Сложный пример использования материала -
workflow count SHOES:ITEM_SHOES_SOCKS//REED_ROPE:THREAD 30 10
Производить столько носков, чтобы минимум 20 из них лежали на складе. Материал - ткань Rope Reed
Для того чтобы данное производство работало необходимо пользоваться командой job item-material 1 PLANT:REED_ROPE:THREAD - назначить работе по пошиву носок определенный материал. Без этого первая команда не найдет работу, производящую именно такие носки.
Старые выброшенные носки нужно продавать или уничтожать, когда общее количество носков упадет ниже 20, они начнут производиться
[свернуть]

Пещерный человек:
А если я хочу отменить одну из автоматизированных работ, которые мне более не нужны, что нужно прописать?

Andys:

--- Цитата: Пещерный человек от 28 Октября 2012, 10:34:01 ---А если я хочу отменить одну из автоматизированных работ, которые мне более не нужны, что нужно прописать?

--- Конец цитаты ---
Workflow unlimit насколько помню
И саму работу удалить - вначале отключить повтор потом удалить

FearOfTheLight:
r-c? (repeat - cancel)

Andys:

--- Цитата: FearOfTheLight от 28 Октября 2012, 20:22:06 ---r-c? (repeat - cancel)

--- Конец цитаты ---
Ага. Пока включен R, workflow не даст удалить работу, он её тут же восстанавливает в SR статусе.
Так что вначале снять повтор, потом убить.
После этого можно unlimit в самом workflow не отключать, сам он удаленную работу не создаст, но будет ругаться в логах типа "невозможно произвести хххххх". Если такие сообщения не мешают, то можно оставить.

Также, командой workflow list-commands можно создать дамп команд, которые формируют текущую настройку. Можно его сохранить в текстовик и позже подгружать.
Или сделать несколько текстовиков, чтобы не запоминать длинные команды и параметры.
Тут только надо помнить - что если в начале текстовика поставить workflow clear-all, то он очистит всё предыдущее. Это обычно используется только в больших глобальных списках

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии