Относительно недавно открыл для себя, и с этой опцией стало намного меньше микроменеджмента и ошибок.
Общее назначение - производство и поддержание заданного количества того или иного продукта/вещей.
Поскольку почти полдня потратил чтобы вникнуть в принцип действия, то поделюсь, возможно сэкономит вам немного времени.
Включение плагина - в 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 [имя файла] - загрузить в дфхак и выполнить все команды из этого файла.
д.
использование job1. Подсвечиваем курсором какую-то работу в мастерской
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, они начнут производиться