Macros and Keymaps: различия между версиями

Материал из Dwarf Fortress Wiki
Перейти к навигацииПерейти к поиску
м (Замена текста — « - » на « — »)
Нет описания правки
 
(не показано 17 промежуточных версий 9 участников)
Строка 1: Строка 1:
{{elven}}
 


Dwarf Fortress требует активного использования клавиатуры. Но в распоряжении дварфовода также имеется встроенная система макросов. Благодаря ей или какой-либо внешней программе, Вы можете сэкономить много времени, когда требуется сделать множество указаний, перестроек, выбрасываний и т.д.
Dwarf Fortress требует активного использования клавиатуры. Но в распоряжении дварфовода также имеется встроенная система макросов. Благодаря ей или какой-либо внешней программе, Вы можете сэкономить много времени, когда требуется сделать множество указаний, перестроек, выбрасываний и т.д.
Строка 11: Строка 11:
*{{k|Ctrl}}+{{k|s}} = сохранить макрос
*{{k|Ctrl}}+{{k|s}} = сохранить макрос
*{{k|Ctrl}}+{{k|l}} = загрузить макрос
*{{k|Ctrl}}+{{k|l}} = загрузить макрос
*{{k|Ctrl}}+{{k|u}} + число = повторить макрос [число] раз




Чтобы создать макрос нажмите {{k|Ctrl}}+{{k|r}}, для начала записи Ваших действий. Бывает удобно начинать запись, находясь в меню [[Designations|указаний]], когда Вы можете видеть позицию игрового курсора. Когда Вы произвели все необходимые действия и хотите остановить запись, снова нажмите {{k|Ctrl}}+{{k|r}}. Сохраните макрос, нажав {{k|Ctrl}}+{{k|s}} и введя название. Тогда макрос будет добавлен в ваш список макросов. Чтобы загрузить макрос из списка нажмите {{k|Ctrl}}+{{k|l}} и выберите макрос. Воспроизвести выбранный макрос можно нажатием {{k|Ctrl}}+{{k|p}}.
Чтобы создать макрос нажмите {{k|Ctrl}}+{{k|r}}, для начала записи Ваших действий. Бывает удобно начинать запись, находясь в меню [[Designations|указаний]], когда Вы можете видеть позицию игрового курсора. Когда Вы произвели все необходимые действия и хотите остановить запись, снова нажмите {{k|Ctrl}}+{{k|r}}. Сохраните макрос, нажав {{k|Ctrl}}+{{k|s}} и введя название. Тогда макрос будет добавлен в ваш список макросов. Чтобы загрузить макрос из списка нажмите {{k|Ctrl}}+{{k|l}} и выберите макрос. Воспроизвести выбранный макрос можно нажатием {{k|Ctrl}}+{{k|p}} где бы вы не находились. Так же Вы можете повторить макрос требуемое число раз нажав {{k|Ctrl}}+{{k|u}}, введя двухзначное число (количество повторов) и затем нажав {{k|Ctrl}}+{{k|p}} для запуска макроса. Движение вашей мыши в окне или любое другое действие, в результате которого окно DwarfFortress потеряет фокус,  является <s>раздражающим</s> хорошим способом для прерывания работы макроса (так же, это единственно известный способ).


Сохранённые макросы находятся в '''data/init/macros''' в .mak-файлах. Даже простейший макрос — например, чтобы создать 3-тайловой ширины рампу — может содержать до 50 команд. This is because every possible [[Key_bindings|binding of the key pressed]] is included in the macro and put in a block (and {{k|r}} for ramp has many by default).
Сохранённые макросы находятся в '''data/init/macros''' в .mak-файлах. Даже простейший макрос — например, создание пандуса([[Ramp]]) шириной в 3-тайла — может содержать до 50 команд, так как все возможные [[Key_bindings|назначения клавиш]] включаются в макрос и помещаются в его блок ({{k|r}} для создания [[Ramp|пандуса]] используется многими по умолчанию).


<pre>
<pre>
Строка 31: Строка 32:
</pre>
</pre>


{{заготовка}}


For this example the recording was started, enter was pressed and the recording was stopped. When using this macro every underlying command in the file will be called, if possible. If you are in the designation menu, it will react as a select, the other commands will be ignored. If you are in the burrow menu, it will work like pressing enter there. The macro alway ends with a block containing the end of it's recording. But executing macros seems to ignore this command. If you have changed your key bindings you'll get another result, because the underlying commands are recorded, not the keys pressed.<br />
Для данного примера после записи макроса был нажат {{k|Enter}} после чего запись макроса была остановлена. При использовании этого макроса каждая команда, находящаяся в файле будет вызвана, если это возможно. Если вы находитесь в меню [[Designation|назначений]] данный макрос выполнит лишь команду Выбор (Select), все остальные команды будут проигнорированы. Если же вы находитесь в меню [[Burrow|нор]] он сработает так, как будто бы вы нажали {{k|Enter}} здесь. Макрос всегда заканчивается блоком, содержащим конец (End of macro) его записи. Если Вы изменили назначение клавиш, вы получите другой результат, потому что записываются команды, а не нажатые клавиши.<br /> При создании (или редактировании) макросов рекомендуется использовать только те команды, которые действительно нужны.
When creating or editing your own macros it is a good idea to use only those commands you really want.
 
<pre>
<pre>
ramping_created
ramping_created
Строка 57: Строка 57:
End of macro
End of macro
</pre>
</pre>
This selfmade example will designate a 3 tiles wide ramp one z-level below and place the cursor to make the next execution of the macro continue the way down. The first line has to be the name of the file. You can see that there are grouping tags for every single keypress. These are important for a working macro.<br />
Этот макросы был написан вручную и предназначен для создания [[Ramp|пандуса]] шириной в 3 тайла на один уровень ниже и размещающем курсор для повторного запуска макроса и быстрого создания пандуса ниже. Первая строчка - название файла. Каждое нажатие клавиши "закрывается" группирующим тэгом (End of group). Это необходимо для работы макроса.<br />
It is unknown if there is the possibility of creationg loops/iterations, other programming features or comments.<br />
Неизвестно, можно ли использовать циклы/итерации, а так же другие возможности программирования или комментирования.<br />
There seem to be problems with changing removing and adding macros while the game is running. Save, quit and restart the game when you want to change something.
Редактирование, удаление или добавление макросов при запущенной игре является нелогичным. После редактирования файла макроса вы должны удалить и заново загрузить макрос. Для этого выберите Select Options>KeyBindings>Macros. Удалите макрос и загрузите его используя {{k|Ctrl}}+{{k|l}}.


=== Тонкая настройка макросов ===
=== Тонкая настройка макросов ===
Чем меньше команд содержит макрос, тем быстрее он работает. Это означает, что нужно избегать лишних шагов, оптимизируя "путь" Ваших указаний.
Чем меньше команд содержит макрос, тем быстрее он работает. Это означает, что нужно избегать лишних шагов, оптимизируя "путь" Ваших указаний.


Второй и самый эффективный способ увеличить скорость состоит в том, чтобы удалить все ненужные команды DF из макроса, при помощи текстового редактора. Несмотря на то, что дополнительные команды игнорируются игрой, они отнимают время на обработку. To move a cursor 3 (up/down) or 4 (right/left) commands are recorded, most other keys are bound to more commands. Pressing d for example records more than 30 commands. Depending on what you do, you can increase the speed by 4 or more by reducing the number of commands in every group to the one you need. ''If you edit a macro, you'll have to restart DF afterwards.''
Второй и самый эффективный способ увеличить скорость состоит в том, чтобы удалить все ненужные команды DF из макроса, при помощи текстового редактора. Несмотря на то, что дополнительные команды игнорируются игрой, они отнимают время на обработку. Например для движения курсора вверх/вниз будет записано 3 команды, а для движения налево/направо - 4, большинство остальных клавиш запишут в макрос гораздо больше. Нажатие {{k|d}}, для примера, запишет более 30 команд.  
 
''После редактирования макроса требуется загрузить его заново в игре, смотрите выше''
 
Для примера ниже представлен код простого макроса, который переходит в меню Назначений, выбирает команду [[Mining|копать]] {{k|d}},{{k|d}}, затем двигается на один квадрат вправо и назначает этот тайл для раскопок.


The third way is to change settings in the init-files. In the base init file (data/init/init.txt) you will find the follow lines:  
<pre>
example
OPTION4
CUSTOM_D
WORLD_PARAM_DELETE
LEGENDS_EXPORT_DETAILED_MAP
A_COMBAT_DODGE
A_STATUS_DESC
A_SLEEP_DAWN
A_INV_DROP
SETUP_NOTES_DELETE_NOTE
BUILDJOB_TARGET_RIGHT
BUILDJOB_BED_DORMITORY
BUILDJOB_FARM_WINTER
BUILDJOB_RACKSTAND_KILL2
HOTKEY_BUILDING_DOOR
HOTKEY_BUILDING_CONSTRUCTION_STAIR_DOWN
HOTKEY_BUILDING_WORKSHOP_DYER
BUILDING_ORIENT_RIGHT
BUILDING_ADVANCE_STAGE
BUILDING_TRIGGER_MAX_SIZE_DOWN
BUILDING_TRACK_STOP_DUMP
HOTKEY_GLASS_DOOR
HOTKEY_CARPENTER_DOOR
HOTKEY_MASON_DOOR
HOTKEY_TRAP_DOOR
BUILDJOB_STOCKPILE_DELETE_CHILD
STOCKPILE_ARMOR
STOCKPILE_SETTINGS_DISABLE
STORES_DUMP
ORDERS_DYED_CLOTH
ORDERS_ZONE_DRINKING
D_DESIGNATE
D_HAULING_STOP_LC_DIR
D_BURROWS_DELETE
D_NOTE_DELETE
D_NOTE_ROUTE_DELETE
D_BITEM_DUMP
D_LOOK_DUMP
ARENA_CREATURE_SIDE_UP
ASSIGNTRADE_SORT
DESIGNATE_DUMP
DESIGNATE_DIG
ITEM_DUMP
D_MILITARY_DISBAND_SQUAD
D_MILITARY_ALERTS_DELETE
D_MILITARY_AMMUNITION_REMOVE_ITEM
D_MILITARY_DELETE_UNIFORM
STRING_A100
End of group
STANDARDSCROLL_RIGHT
CURSOR_RIGHT
WORLD_PARAM_INCREASE
A_MOVE_E
End of group
SELECT
CLOSE_MEGA_ANNOUNCEMENT
WORLD_PARAM_ENTER_VALUE
SETUPGAME_SAVE_PROFILE_GO
D_BURROWS_DEFINE
D_MILITARY_ALERTS_SET
End of group
SELECT
CLOSE_MEGA_ANNOUNCEMENT
WORLD_PARAM_ENTER_VALUE
SETUPGAME_SAVE_PROFILE_GO
D_BURROWS_DEFINE
D_MILITARY_ALERTS_SET
End of group
CUSTOM_CTRL_R
End of group
End of macro
</pre>
 
Ниже представлен макрос, выполняющий те же самые действия, только оптимизированный путем удаления ненужных (избыточных) команд. Так же каждый макрос содержит дополнительную команду CUSTOM_CTRL_R в конце, которая может быть удалена без проблем.
 
<pre>
example
DESIGNATE_DIG
End of group
CURSOR_RIGHT
End of group
SELECT
End of group
SELECT
End of group
End of macro
</pre>
 
Третий способ увеличения скорости работы макроса заключается в редактировании файлов настроек. В основном файле настроек (data/init/init.txt) вы можете увидеть следующие строки:
<pre>
<pre>
If you set KEY_REPEAT_ACCEL_LIMIT above one, then after KEY_REPEAT_ACCEL_START repetitions  
If you set KEY_REPEAT_ACCEL_LIMIT above one, then after KEY_REPEAT_ACCEL_START repetitions  
Строка 80: Строка 173:


</pre>
</pre>
This means that the speed between macro commands will gradually increase until it hits the limit. The secondary command is when the gradual increase in speed increases.
 
* <code>MACRO_MS</code> регулирует время (в миллисекундах) между командами макроса. (Значение по умолчанию, 15, дает 1000/15 команд в секунду, т.е. около 66). Уменьшение этого значения '''увеличивает''' скорость выполнению макроса. При значительном снижении этого параметра игра может не отвечать при выполнении макроса.
* <code>KEY_REPEAT_ACCEL_START</code> и <code>KEY_REPEAT_ACCEL_LIMIT</code> не связаны с выполнением макросов (за исключением записи).


== Внешние утилиты ==
== Внешние утилиты ==
=== [http://joelpt.net/quickfort/ QuickFort] ===
Дополнительная утилита для Dwarf Fortress основанная на таблицах. Переводит CSV файлы, содержащие "графическое" (или как минимум двумерное) представление Ваших желаний в обычные макросы DF. Включает в себя некоторое количество скриптов для быстрого старта, некоторые из них довольно сложны. Входит в состав Lazy Newb Pack.


=== AutoHotKey ===
=== AutoHotKey ===
Go to [[Utilities#AutoHotKey]] and download AutoHotKey. Installation is simple and the program uses few system resources.
Скачайте AutoHotKey в [[Utilities#AutoHotKey]]. Установка проста и утилита использует мало системных ресурсов.
Write macro scripts (file type .ahk), which may contain any number of commands. You activate scripts by double-clicking .ahk files and deactivate them by right-clicking the AutoHotKey icon on the task bar. Both of these can be done at any time — even right in the middle of a game. AutoHotKey also allows for automated activation of scripts.
Запишите макрос (сохраняется в формате .ahk), содержащий любое количество команд. Скрипт запускается двойным кликом по файлу .ahk и выключается кликом правой кнопки мыши по иконке AutoHotKey в трее. Это можно сделать в любое время - даже посреди игры. AutoHotKey также способен сам запускать скрипты.
 
 
== Полезные идеи для макросов ==
 
Далее идут идеи для макросов, которые сделают управление Вашей крепостью значительно легче. При запуске большинства макросов рекомендуется '''поставить игру на паузу''' ({{k|Space}}) до запуска макроса, чтобы при неожиданном поведение дварфов (например при рождении ребенка) или по другой причине не сработала авто-фокусировка и макрос не выполнился бы в другом месте.
 
 
=== Комплекс спален ===
 
Спальни, особенно большие или другие блоки идентичных построек требуют большое количество назначений и операций по постройке. Эти макросы предназначены для ускорения процесса. Для всех макросов, включающих в себя размещение большого количества мебели или других объектов рекомендуется временно [[Forbidden|заблокировать]] артефакты и предметы высокого качества чтобы они не доставлись для обычных дварфов.
 
==== Размещение кроватей ====
 
Итак, вы записали макрос для раскопки комплекса спален, теперь необходимо разместить в них мебель. Перейдите в меню строительства ({{k|b}}uild menu), выберите кровати ({{k|b}}ed) и перейдите на первую клетку, где Вы хотите разместить кровать.
 
Начните запись макроса ({{k|Ctrl}}+{{k|r}}) и разместите первую кровать (выберите первую кровать из списка), затем перейдите к следующей спальне последовательно. Повторяйте требуемое количество раз,например, если Вы выкопали несколько горизонтальных рядов спален, то, разместите кровати до конца первого рядя и переместите курсор в начало второго, для ускорения. Выключите запись макроса ({{k|Ctrl}}+{{k|r}}), но не выходите из меню Строительства. Вы можете сохранить макрос ({{k|Ctrl}}+{{k|s}}), хотя это и не обязательно. Воспроизведите макрос ({{k|Ctrl}}+{{k|p}}) и в результате у вас будут кровати во втором ряду. Повторяйте требуемое количество раз.
 
==== Размещение разных предметов по одинаковой сетке ====
 
Можно записать дополнительные макросы для размещения шкафов, столов, стульев или дверей или обобщить предыдущий.
 
Обобщение предыдущего выглядит следующим образом: перейдите в режим строительства, переместите с помощью клавиш {{k|+}}{{k|-}} указатель на устанавливаемый предмет (выбор по клавише предмета не переносит указатель), нажмите {{k|Enter}}. Установите курсор на нужной позиции, после чего начните запись макроса ({{k|Ctrl}}+{{k|r}}). Разместите выбранный предмет, выберите его ещё раз (всего будет три нажатия {{k|Enter}}: два для установки и одно для выбора) и перейдите на следующую позицию установки в сетке, после чего завершите запись макроса ({{k|Ctrl}}+{{k|r}}).
 
Для использования макроса выберите требуемый предмет в меню строительства и запустите макрос на выполнение ({{k|Ctrl}}+{{k|p}}). Здесь удобно пользоваться множественным запуском макроса, используя ({{k|Ctrl}}+{{k|u}}). Можно записать макрос для одной комнаты, можно и для целого ряда, но в таком случае будет сложнее использовать множественный запуск и уменьшится гибкость решения.


:'''Please see also the [[Macros and Keymaps|40d macros page]], as much of what is there works perfectly fine. If you can verify it works, please move it to this page.'''
{|class="standard mw-collapsible mw-collapsed"
!style="text-align: left; background:#efefef;"| Пример макроса для комнат, шириной в три блока
|-
|Сохраните текст в файл '''furniture.mak''' в папку ''/data/init/macros'' каталога установки игры. Принципиально, чтобы первая строка файла совпадала с именем самого файла.


==== Troubleshooting Scripts ====
<pre>furniture
Users may experience some issues in getting scripts to work, particularly when using looping scripts when experiencing low frame-rates.
SELECT
* If experiencing low frame-rates, try adding delays ("Sleep 100" to pause for 100 milliseconds for example) within loops to allow the interface to keep up. If there are nested loops, sometimes adding a pause at the end of an inner loop is all that is needed to flush the keyboard buffer
End of group
* Another way to add delay during and after each simulated key press is to put <B>SetKeyDelay, 40, 40</B> at the start of the macro.
SELECT
* Make sure that Dwarf Fortress maintains focus. IM windows are the enemy! Who needs friends anyhow? You've got Dwarf Fortress.
End of group
* This may go without saying, but most macros assume standard key-mappings. If you're using non-standard ones, you may have to edit the macro to get it to work.
SELECT
* Visiting liaisons can bring up screens that eat keystrokes, throwing a long-looping script out-of-phase with where it expects the game to be. Wait for the farewell screen before running a long script.
End of group
* The <B>SendPlay</B> function supports keys that the <B>Send</B> function does not, for example {{key|Shift-Enter}}. According to the AutoHotKey documentation, <B>SendPlay</B> may also be better at preventing dropped keystrokes.
CURSOR_RIGHT
End of group
CURSOR_RIGHT
End of group
CURSOR_RIGHT
End of group
CURSOR_RIGHT
End of group
End of macro</pre>
|}
 
==== Изменение размеров комнат ====
 
После того, как спальни были закончены (все кровати были установлены), можно создать макрос для назначения каждой комнаты как спальни. Зайдите в меню настройки строений ({{k|q}}uery) и выберите первую кровать. Начните запись нового макроса и нажмите {{k|r}} для назначения комнаты как спальни, затем нажмите {{k|+}} несколько раз для заполнения доступного пространства. Если Вас устраивает размер спальни, нажмите {{k|Enter}}, перейдите к следующей кровати и повторяйте эти действия для всех кроватей ряда. Если Вы хотите, чтобы спальни заполняли всю комнату, но не все ваши комнаты одного размера, вы можете нажать {{k|+}} большее или меньшее число раз для этих случаев. Повторите эти действия для всех комнат в ряду. Не забудьте остановить запись макроса и сохранить его (если требуется).
 
=== Множественный выбор ===
 
Используя этот макрос Вы сможете выбирать большое количество вещей за один раз. Чрезвычайно полезен при торговле с караваном. Записывайте {{k|enter}}, затем {{k|down}} 10-25 раз подряд (для некоторых видов меню возможно потребуется запись сочетания {{k|enter}}, {{k|+}}). Когда караван придет, Ваши дварфы отнесут все отмеченные позиции на Рынок как обычно. В меню торговли воспользуйтесь этими макросами требуемое количество раз. Макрос выберет все позиции в списке "На продажу" сохранив корзины (bins) для дальнейшего использования. Не забудьте убрать из получившегося списка товары, которые вы не хотите продавать, например, дерево, если в данный момент вы торгуете с Эльфами.
 
=== Массовое создание ловушек ===
 
Аналогично размещению предметов в спальнях. Полезно для заполнение коридоров ловушками с оружием или камнепадными ловушками
 
 
=== Экипировка дварфов ===
 
Настройки экипировки (uniform) дварфов не сохраняются при переходе в другую крепость и Вам необходимо создавать её после каждой высадки. Вместо этого вы можете записать несколько макросов для создания Ваших настроек экипировки (например выдавать бойцам (wrestler) только кожаную броню и т.д.). Рекомендуется начинать запись макроса из главного окна, до перехода в меню армии {{k|m}}ilitary и не вводить название экипировки во время записи макроса. Кроме этого после входа в меню экипировки не переходите обратно к списку экипировки (uniform list), в противном случае при воспроизведении макроса возникнут проблемы. И, как обычно, ставьте паузу в игре перед началом записи или воспроизведения макроса.
 
=== Раскопка нестандартным способами ===
 
Для дополнительной информации смотрите [[Exploratory_mining|геологическая разведка]]
 
Геологическая разведка, в отличие от простого копания в шести основных направлениях (Север, Восток, Юг, Запад, Вверх и Вниз), например диагональные шахты довольно сложны для разметки. Для упрощения можно создать макросы, которые будут размечать небольшие коридоры в нестандартных направлениях (СВ, СЗ, ЮВ и ЮЗ). Таким образом для создания требуемого коридора необходимо будет лишь выполнить макрос несколько раз.  
 
=== Лестничные марши ===
 
Создание простых лестниц довольно простая задача, но если вы заходите включить свободное пространство вокруг лестницы, например как здесь
<pre>
      (комнаты)
 
        %%..%%
        %....%
(ком-  ..XX.. (еще ком
  наты) ..XX..  наты)
        %....% 
        %%..%%
 
      (и т.д.)
</pre>


==== General Fortress Mode Hotkeys Script ====
... получится довольно громоздко, если вы создадите макрос для каждого z-слоя отдельно. Вместо этого вы можете создать макрос относительно какой-то точки (например, верхняя левая клетка лестничного марша 2х2 или что-то подобное), начать запись, сделать область, которую вы хотите раскопать и в конце вернуть курсор в начальную точку и перейти на z-уровень ниже и остановить запись. Теперь вы можете поставить этот макрос на повтор требуемое количество раз.  
An attempt at speeding up various designations. Includes an up/down stair builder, a fast move up/down, and some select-and-advance keys. Please see [[user:DDR#Dwarf_Fortress_General_AHK_Script]].


Для дополнительной настройки, вырежьте требуемые команды в текстовом редакторе, как было сказано выше. Затем выделите макрос и скопируйте команды несколько раз подряд. Сохраните макрос в другом файле (не забудьте исправить название макроса в верхней строчке). Используя этот макрос вы сможете легко создавать Ваши собственные лестничные марши. Так же можно создать макросы на 1, 5 или сразу 20 z-уровней (переход на другой уровень уже встроен в тело макроса, поэтому необходимо лишь скопировать команды нужное количество раз).


== Проблемы при использовании ==
Вы можете столкнуться с некоторыми проблемами при использовании внешних скриптов, особенно когда используются циклы скриптов, например частота смены кадров может уменьшиться.


* Если частота смены кадров упала, попробуйте добавить задержки (например команда "Sleep 100" сделает паузу в 100 миллисекунд) в макрос, чтобы позволить интерфейсу "не оставать". Если используются вложенные циклы, то время от времени необходимо добавлять паузы в конце внутренних циклов для очистки буфера клавиатуры.
* Еще один способ для внесения задержки до и после каждого "нажатия" клавиши - вставить <B>SetKeyDelay, 40, 40</B> в начале макроса.
* Удостоверьтесь, что Dwarf Fortress - главное окно. Открытые окна социальных сетей и интернет пейджеров - враги! Кому нужны друзья во всяком случае. У Вас есть Dwarf Fortress.
* Большинство макросов рассчитаны на стандартно назначенные клавиши. Если вы используете нестандартный набор - отредактируйте макрос.


{{Category|Интерфейс}}
{{Category|Интерфейс}}
[[en:Macros and Keymaps]]
[[en:Macros and Keymaps]]

Текущая версия от 06:46, 9 сентября 2022


Dwarf Fortress требует активного использования клавиатуры. Но в распоряжении дварфовода также имеется встроенная система макросов. Благодаря ей или какой-либо внешней программе, Вы можете сэкономить много времени, когда требуется сделать множество указаний, перестроек, выбрасываний и т.д.

Встроенная система макросов DF

Создание макросов

В самом DF управление макросами следующее:

  • Ctrl+r = начать/прекратить запись макроса
  • Ctrl+p = воспроизвести макрос
  • Ctrl+s = сохранить макрос
  • Ctrl+l = загрузить макрос
  • Ctrl+u + число = повторить макрос [число] раз


Чтобы создать макрос нажмите Ctrl+r, для начала записи Ваших действий. Бывает удобно начинать запись, находясь в меню указаний, когда Вы можете видеть позицию игрового курсора. Когда Вы произвели все необходимые действия и хотите остановить запись, снова нажмите Ctrl+r. Сохраните макрос, нажав Ctrl+s и введя название. Тогда макрос будет добавлен в ваш список макросов. Чтобы загрузить макрос из списка нажмите Ctrl+l и выберите макрос. Воспроизвести выбранный макрос можно нажатием Ctrl+p где бы вы не находились. Так же Вы можете повторить макрос требуемое число раз нажав Ctrl+u, введя двухзначное число (количество повторов) и затем нажав Ctrl+p для запуска макроса. Движение вашей мыши в окне или любое другое действие, в результате которого окно DwarfFortress потеряет фокус, является раздражающим хорошим способом для прерывания работы макроса (так же, это единственно известный способ).

Сохранённые макросы находятся в data/init/macros в .mak-файлах. Даже простейший макрос — например, создание пандуса(Ramp) шириной в 3-тайла — может содержать до 50 команд, так как все возможные назначения клавиш включаются в макрос и помещаются в его блок (r для создания пандуса используется многими по умолчанию).

pressing_enter_recorded
		SELECT
		CLOSE_MEGA_ANNOUNCEMENT
		WORLD_PARAM_ENTER_VALUE
		SETUPGAME_SAVE_PROFILE_GO
		D_BURROWS_DEFINE
		D_MILITARY_ALERTS_SET
	End of group
		CUSTOM_CTRL_R
	End of group
End of macro


Для данного примера после записи макроса был нажат Enter после чего запись макроса была остановлена. При использовании этого макроса каждая команда, находящаяся в файле будет вызвана, если это возможно. Если вы находитесь в меню назначений данный макрос выполнит лишь команду Выбор (Select), все остальные команды будут проигнорированы. Если же вы находитесь в меню нор он сработает так, как будто бы вы нажали Enter здесь. Макрос всегда заканчивается блоком, содержащим конец (End of macro) его записи. Если Вы изменили назначение клавиш, вы получите другой результат, потому что записываются команды, а не нажатые клавиши.
При создании (или редактировании) макросов рекомендуется использовать только те команды, которые действительно нужны.

ramping_created
		DESIGNATE_RAMP
	End of group
		CURSOR_DOWN_Z
	End of group
		SELECT
	End of group
		CURSOR_RIGHT
	End of group
		CURSOR_RIGHT
	End of group
		SELECT
	End of group
		CURSOR_LEFT
	End of group
		CURSOR_LEFT
	End of group
		CURSOR_UP
	End of group
End of macro

Этот макросы был написан вручную и предназначен для создания пандуса шириной в 3 тайла на один уровень ниже и размещающем курсор для повторного запуска макроса и быстрого создания пандуса ниже. Первая строчка - название файла. Каждое нажатие клавиши "закрывается" группирующим тэгом (End of group). Это необходимо для работы макроса.
Неизвестно, можно ли использовать циклы/итерации, а так же другие возможности программирования или комментирования.
Редактирование, удаление или добавление макросов при запущенной игре является нелогичным. После редактирования файла макроса вы должны удалить и заново загрузить макрос. Для этого выберите Select Options>KeyBindings>Macros. Удалите макрос и загрузите его используя Ctrl+l.

Тонкая настройка макросов

Чем меньше команд содержит макрос, тем быстрее он работает. Это означает, что нужно избегать лишних шагов, оптимизируя "путь" Ваших указаний.

Второй и самый эффективный способ увеличить скорость состоит в том, чтобы удалить все ненужные команды DF из макроса, при помощи текстового редактора. Несмотря на то, что дополнительные команды игнорируются игрой, они отнимают время на обработку. Например для движения курсора вверх/вниз будет записано 3 команды, а для движения налево/направо - 4, большинство остальных клавиш запишут в макрос гораздо больше. Нажатие d, для примера, запишет более 30 команд.

После редактирования макроса требуется загрузить его заново в игре, смотрите выше

Для примера ниже представлен код простого макроса, который переходит в меню Назначений, выбирает команду копать d,d, затем двигается на один квадрат вправо и назначает этот тайл для раскопок.

example
		OPTION4
		CUSTOM_D
		WORLD_PARAM_DELETE
		LEGENDS_EXPORT_DETAILED_MAP
		A_COMBAT_DODGE
		A_STATUS_DESC
		A_SLEEP_DAWN
		A_INV_DROP
		SETUP_NOTES_DELETE_NOTE
		BUILDJOB_TARGET_RIGHT
		BUILDJOB_BED_DORMITORY
		BUILDJOB_FARM_WINTER
		BUILDJOB_RACKSTAND_KILL2
		HOTKEY_BUILDING_DOOR
		HOTKEY_BUILDING_CONSTRUCTION_STAIR_DOWN
		HOTKEY_BUILDING_WORKSHOP_DYER
		BUILDING_ORIENT_RIGHT
		BUILDING_ADVANCE_STAGE
		BUILDING_TRIGGER_MAX_SIZE_DOWN
		BUILDING_TRACK_STOP_DUMP
		HOTKEY_GLASS_DOOR
		HOTKEY_CARPENTER_DOOR
		HOTKEY_MASON_DOOR
		HOTKEY_TRAP_DOOR
		BUILDJOB_STOCKPILE_DELETE_CHILD
		STOCKPILE_ARMOR
		STOCKPILE_SETTINGS_DISABLE
		STORES_DUMP
		ORDERS_DYED_CLOTH
		ORDERS_ZONE_DRINKING
		D_DESIGNATE
		D_HAULING_STOP_LC_DIR
		D_BURROWS_DELETE
		D_NOTE_DELETE
		D_NOTE_ROUTE_DELETE
		D_BITEM_DUMP
		D_LOOK_DUMP
		ARENA_CREATURE_SIDE_UP
		ASSIGNTRADE_SORT
		DESIGNATE_DUMP
		DESIGNATE_DIG
		ITEM_DUMP
		D_MILITARY_DISBAND_SQUAD
		D_MILITARY_ALERTS_DELETE
		D_MILITARY_AMMUNITION_REMOVE_ITEM
		D_MILITARY_DELETE_UNIFORM
		STRING_A100
	End of group
		STANDARDSCROLL_RIGHT
		CURSOR_RIGHT
		WORLD_PARAM_INCREASE
		A_MOVE_E
	End of group
		SELECT
		CLOSE_MEGA_ANNOUNCEMENT
		WORLD_PARAM_ENTER_VALUE
		SETUPGAME_SAVE_PROFILE_GO
		D_BURROWS_DEFINE
		D_MILITARY_ALERTS_SET
	End of group
		SELECT
		CLOSE_MEGA_ANNOUNCEMENT
		WORLD_PARAM_ENTER_VALUE
		SETUPGAME_SAVE_PROFILE_GO
		D_BURROWS_DEFINE
		D_MILITARY_ALERTS_SET
	End of group
		CUSTOM_CTRL_R
	End of group
End of macro

Ниже представлен макрос, выполняющий те же самые действия, только оптимизированный путем удаления ненужных (избыточных) команд. Так же каждый макрос содержит дополнительную команду CUSTOM_CTRL_R в конце, которая может быть удалена без проблем.

example
		DESIGNATE_DIG
	End of group
		CURSOR_RIGHT
	End of group
		SELECT
	End of group
		SELECT
	End of group
End of macro

Третий способ увеличения скорости работы макроса заключается в редактировании файлов настроек. В основном файле настроек (data/init/init.txt) вы можете увидеть следующие строки:

If you set KEY_REPEAT_ACCEL_LIMIT above one, then after KEY_REPEAT_ACCEL_START repetitions 
the repetition delay will smoothly decrease until repetition is this number of times faster 
than at the start.

[KEY_REPEAT_ACCEL_LIMIT:8]
[KEY_REPEAT_ACCEL_START:10]

This controls the number of milliseconds between macro instructions.

[MACRO_MS:15]

  • MACRO_MS регулирует время (в миллисекундах) между командами макроса. (Значение по умолчанию, 15, дает 1000/15 команд в секунду, т.е. около 66). Уменьшение этого значения увеличивает скорость выполнению макроса. При значительном снижении этого параметра игра может не отвечать при выполнении макроса.
  • KEY_REPEAT_ACCEL_START и KEY_REPEAT_ACCEL_LIMIT не связаны с выполнением макросов (за исключением записи).

Внешние утилиты

QuickFort

Дополнительная утилита для Dwarf Fortress основанная на таблицах. Переводит CSV файлы, содержащие "графическое" (или как минимум двумерное) представление Ваших желаний в обычные макросы DF. Включает в себя некоторое количество скриптов для быстрого старта, некоторые из них довольно сложны. Входит в состав Lazy Newb Pack.

AutoHotKey

  1. Скачайте AutoHotKey в Utilities#AutoHotKey. Установка проста и утилита использует мало системных ресурсов.
  2. Запишите макрос (сохраняется в формате .ahk), содержащий любое количество команд. Скрипт запускается двойным кликом по файлу .ahk и выключается кликом правой кнопки мыши по иконке AutoHotKey в трее. Это можно сделать в любое время - даже посреди игры. AutoHotKey также способен сам запускать скрипты.


Полезные идеи для макросов

Далее идут идеи для макросов, которые сделают управление Вашей крепостью значительно легче. При запуске большинства макросов рекомендуется поставить игру на паузу (Space) до запуска макроса, чтобы при неожиданном поведение дварфов (например при рождении ребенка) или по другой причине не сработала авто-фокусировка и макрос не выполнился бы в другом месте.


Комплекс спален

Спальни, особенно большие или другие блоки идентичных построек требуют большое количество назначений и операций по постройке. Эти макросы предназначены для ускорения процесса. Для всех макросов, включающих в себя размещение большого количества мебели или других объектов рекомендуется временно заблокировать артефакты и предметы высокого качества чтобы они не доставлись для обычных дварфов.

Размещение кроватей

Итак, вы записали макрос для раскопки комплекса спален, теперь необходимо разместить в них мебель. Перейдите в меню строительства (build menu), выберите кровати (bed) и перейдите на первую клетку, где Вы хотите разместить кровать.

Начните запись макроса (Ctrl+r) и разместите первую кровать (выберите первую кровать из списка), затем перейдите к следующей спальне последовательно. Повторяйте требуемое количество раз,например, если Вы выкопали несколько горизонтальных рядов спален, то, разместите кровати до конца первого рядя и переместите курсор в начало второго, для ускорения. Выключите запись макроса (Ctrl+r), но не выходите из меню Строительства. Вы можете сохранить макрос (Ctrl+s), хотя это и не обязательно. Воспроизведите макрос (Ctrl+p) и в результате у вас будут кровати во втором ряду. Повторяйте требуемое количество раз.

Размещение разных предметов по одинаковой сетке

Можно записать дополнительные макросы для размещения шкафов, столов, стульев или дверей или обобщить предыдущий.

Обобщение предыдущего выглядит следующим образом: перейдите в режим строительства, переместите с помощью клавиш +- указатель на устанавливаемый предмет (выбор по клавише предмета не переносит указатель), нажмите Enter. Установите курсор на нужной позиции, после чего начните запись макроса (Ctrl+r). Разместите выбранный предмет, выберите его ещё раз (всего будет три нажатия Enter: два для установки и одно для выбора) и перейдите на следующую позицию установки в сетке, после чего завершите запись макроса (Ctrl+r).

Для использования макроса выберите требуемый предмет в меню строительства и запустите макрос на выполнение (Ctrl+p). Здесь удобно пользоваться множественным запуском макроса, используя (Ctrl+u). Можно записать макрос для одной комнаты, можно и для целого ряда, но в таком случае будет сложнее использовать множественный запуск и уменьшится гибкость решения.

Пример макроса для комнат, шириной в три блока
Сохраните текст в файл furniture.mak в папку /data/init/macros каталога установки игры. Принципиально, чтобы первая строка файла совпадала с именем самого файла.
furniture
		SELECT
	End of group
		SELECT
	End of group
		SELECT
	End of group
		CURSOR_RIGHT
	End of group
		CURSOR_RIGHT
	End of group
		CURSOR_RIGHT
	End of group
		CURSOR_RIGHT
	End of group
End of macro

Изменение размеров комнат

После того, как спальни были закончены (все кровати были установлены), можно создать макрос для назначения каждой комнаты как спальни. Зайдите в меню настройки строений (query) и выберите первую кровать. Начните запись нового макроса и нажмите r для назначения комнаты как спальни, затем нажмите + несколько раз для заполнения доступного пространства. Если Вас устраивает размер спальни, нажмите Enter, перейдите к следующей кровати и повторяйте эти действия для всех кроватей ряда. Если Вы хотите, чтобы спальни заполняли всю комнату, но не все ваши комнаты одного размера, вы можете нажать + большее или меньшее число раз для этих случаев. Повторите эти действия для всех комнат в ряду. Не забудьте остановить запись макроса и сохранить его (если требуется).

Множественный выбор

Используя этот макрос Вы сможете выбирать большое количество вещей за один раз. Чрезвычайно полезен при торговле с караваном. Записывайте enter, затем down 10-25 раз подряд (для некоторых видов меню возможно потребуется запись сочетания enter, +). Когда караван придет, Ваши дварфы отнесут все отмеченные позиции на Рынок как обычно. В меню торговли воспользуйтесь этими макросами требуемое количество раз. Макрос выберет все позиции в списке "На продажу" сохранив корзины (bins) для дальнейшего использования. Не забудьте убрать из получившегося списка товары, которые вы не хотите продавать, например, дерево, если в данный момент вы торгуете с Эльфами.

Массовое создание ловушек

Аналогично размещению предметов в спальнях. Полезно для заполнение коридоров ловушками с оружием или камнепадными ловушками


Экипировка дварфов

Настройки экипировки (uniform) дварфов не сохраняются при переходе в другую крепость и Вам необходимо создавать её после каждой высадки. Вместо этого вы можете записать несколько макросов для создания Ваших настроек экипировки (например выдавать бойцам (wrestler) только кожаную броню и т.д.). Рекомендуется начинать запись макроса из главного окна, до перехода в меню армии military и не вводить название экипировки во время записи макроса. Кроме этого после входа в меню экипировки не переходите обратно к списку экипировки (uniform list), в противном случае при воспроизведении макроса возникнут проблемы. И, как обычно, ставьте паузу в игре перед началом записи или воспроизведения макроса.

Раскопка нестандартным способами

Для дополнительной информации смотрите геологическая разведка

Геологическая разведка, в отличие от простого копания в шести основных направлениях (Север, Восток, Юг, Запад, Вверх и Вниз), например диагональные шахты довольно сложны для разметки. Для упрощения можно создать макросы, которые будут размечать небольшие коридоры в нестандартных направлениях (СВ, СЗ, ЮВ и ЮЗ). Таким образом для создания требуемого коридора необходимо будет лишь выполнить макрос несколько раз.

Лестничные марши

Создание простых лестниц довольно простая задача, но если вы заходите включить свободное пространство вокруг лестницы, например как здесь

       (комнаты)

        %%..%%
        %....%
 (ком-  ..XX.. (еще ком
  наты) ..XX..  наты)
        %....%  
        %%..%%

       (и т.д.)

... получится довольно громоздко, если вы создадите макрос для каждого z-слоя отдельно. Вместо этого вы можете создать макрос относительно какой-то точки (например, верхняя левая клетка лестничного марша 2х2 или что-то подобное), начать запись, сделать область, которую вы хотите раскопать и в конце вернуть курсор в начальную точку и перейти на z-уровень ниже и остановить запись. Теперь вы можете поставить этот макрос на повтор требуемое количество раз.

Для дополнительной настройки, вырежьте требуемые команды в текстовом редакторе, как было сказано выше. Затем выделите макрос и скопируйте команды несколько раз подряд. Сохраните макрос в другом файле (не забудьте исправить название макроса в верхней строчке). Используя этот макрос вы сможете легко создавать Ваши собственные лестничные марши. Так же можно создать макросы на 1, 5 или сразу 20 z-уровней (переход на другой уровень уже встроен в тело макроса, поэтому необходимо лишь скопировать команды нужное количество раз).

Проблемы при использовании

Вы можете столкнуться с некоторыми проблемами при использовании внешних скриптов, особенно когда используются циклы скриптов, например частота смены кадров может уменьшиться.

  • Если частота смены кадров упала, попробуйте добавить задержки (например команда "Sleep 100" сделает паузу в 100 миллисекунд) в макрос, чтобы позволить интерфейсу "не оставать". Если используются вложенные циклы, то время от времени необходимо добавлять паузы в конце внутренних циклов для очистки буфера клавиатуры.
  • Еще один способ для внесения задержки до и после каждого "нажатия" клавиши - вставить SetKeyDelay, 40, 40 в начале макроса.
  • Удостоверьтесь, что Dwarf Fortress - главное окно. Открытые окна социальных сетей и интернет пейджеров - враги! Кому нужны друзья во всяком случае. У Вас есть Dwarf Fortress.
  • Большинство макросов рассчитаны на стандартно назначенные клавиши. Если вы используете нестандартный набор - отредактируйте макрос.