- v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
- Use this page to report any issues related to the migration.
Difference between revisions of "40d:Macros and keymaps"
Line 240: | Line 240: | ||
I'll go ahead and delete this soon. | I'll go ahead and delete this soon. | ||
+ | |||
+ | ===Improved Food/Alcohol buying macro=== | ||
+ | This macro ''actually'' buys all the cost-2 food (that was available the time I made this macro), as well as the four types of alcohol. | ||
+ | It can deal with meat or drink that you already have, or is not featured currently. Feel free to update this with other types of meat. Also note that this should be used on the Items screen. | ||
+ | |||
+ | <pre> | ||
+ | WinWait, Dwarf Fortress, | ||
+ | IfWinNotActive, Dwarf Fortress, , WinActivate, Dwarf Fortress, | ||
+ | WinWaitActive, Dwarf Fortress, | ||
+ | |||
+ | send ndwarven{SPACE}ale{RIGHT}{ENTER}{F9} | ||
+ | send ndwarven{SPACE}rum{RIGHT}{ENTER}{F9} | ||
+ | send ndwarven{SPACE}beer{RIGHT}{ENTER}{F9} | ||
+ | send ndwarven{SPACE}wine{RIGHT}{ENTER}{F9} | ||
+ | send ndonkey{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nmule{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send ndeer{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nracoon{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nfox{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nrhesus{SPACE}macaque{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nhorse{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send ngroundhog{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nmountain{SPACE}goat{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | send nhoary{SPACE}marmot{SPACE}meat{RIGHT}{ENTER}{F9} | ||
+ | </pre> | ||
===Bed Assigning macro=== | ===Bed Assigning macro=== |
Revision as of 01:37, 26 April 2008
Playing Dwarf Fortress means lots of typing. Although the game (as of version v0.27.176.38c) has no internal macro/keymap system, using an external program can save you a great deal of time when dumping, rewalling, designating, and so forth.
- Go to Utilities#AutoHotKey and download AutoHotKey. Installation is simple and the program uses few system resources.
- 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.
AutoHotKey Examples
Dumping
Stock Screen Dump
Taken from an old version of Jackard's user page.
To use, first have your bookeeper do enough desk work so you can view individual items in the stocks listing. Then bring it up and press del to quickly mark stuff. To adjust the key repeat rate, edit the KEY_HOLD_MS value in \data\init\init.txt.
del:: IfWinActive Dwarf Fortress { send d{down} return } else { send {del} return }
Designation Dump
A dumping script by Dukederek:
This script uses a system similar the commands in the designations menu to mark most of the contents of a large area for dumping. My talk page has more detailed instruction.
Essentially you need to create two text files with the following titles and content. When playing DF it is safe to have blockdumpinit running constantly as long as you dont plan on using the ctrl-d combination for something else.
blockdumpinit.ahk
^d:: RunWait, "blockdumpmain.ahk" Return
blockdumpmain.ahk
SetKeyDelay 25 return:: Send k return up:: Send w return left:: Send a return down:: Send s return right:: Send d return q:: ExitApp return shift:: x := 0 y := 1 Loop{ Input, keypress, B, {esc} , w,a,s,d,k,q if keypress = w { y := --y Send {up} continue }else if keypress = s { y := ++y Send {down} continue }else if keypress = a { x := --x Send {left} continue }else if keypress = d { x := ++x Send {right} continue }else if keypress = k { break }else if keypress = q { ExitApp } } y := y / 2 z := y z := Floor(z) z := y/z Send d{NumpadAdd}d If z = 0 { If x = 0 ExitApp Else{ Loop %x%{ Send {left}d }ExitApp } }If z <> 1 { Loop %y%{ Loop %x%{ Send {left}d{NumpadAdd}d }Send {up}d Loop %x%{ Send {right}d{NumpadAdd}d }Send {up}d{NumpadAdd}d }Loop %x%{ Send {left}d{NumpadAdd}d } }Else If z = 1 { y := y + 0.5 Loop %y%{ Loop %x%{ Send {left}d{NumpadAdd}d }Send {up}d Loop %x%{ Send {right}d{NumpadAdd}d }Send {up}d{NumpadAdd}d }Send d{NumpadSub}d }ExitApp
Rewalling
Taken from Valdemar's user page.
This is a macro to aid with rewalling. To use, copy-paste the script into a new .ahk file and run the script with AutoHotkey. Then, in Dwarf Fortress, press b-C-w, move the cursor to where you want to start the wall, and hold Ctrl-Shift-Arrowkey, using the direction you want to rewall in. To build floors, press b-C-f instead, and use Ctrl-Alt-Arrowkey. To stop, just release the keys.
The script will use the first material in the list. I suggest you create a stockpile near the construction site that only accepts the item you wish to build with and temporarily forbid any nearby materials you don't want to build with.
$^+Left:: ProcessEvent("Left","w") $^+Right:: ProcessEvent("Right","w") $^+Up:: ProcessEvent("Up","w") $^+Down:: ProcessEvent("Down","w") $^!Left:: ProcessEvent("Left","f") $^!Right:: ProcessEvent("Right","f") $^!Up:: ProcessEvent("Up","f") $^!Down:: ProcessEvent("Down","f") ProcessEvent(direction, type) { Send {Enter} Sleep 100 Send {Enter} Sleep 100 Send %type% Sleep 100 Send {%direction%} Loop { if not GetKeyState(direction, "P") break Send {Enter} Sleep 100 Send {Enter} Sleep 100 Send %type% Sleep 100 Send {%direction%} } }
Grid-by-grid designation
For easier diagonal and fancy mining. Assumes that DF is active. "^!" means ctrl-alt-direction.
^!NumpadEnd:: send {Enter}{Enter}{NumpadEnd} return ^!NumpadDown:: send {Enter}{Enter}{NumpadDown} return ^!NumpadPgDn:: send {Enter}{Enter}{NumpadPgDn} return ^!NumpadLeft:: send {Enter}{Enter}{NumpadLeft} return ^!NumpadRight:: send {Enter}{Enter}{NumpadRight} return ^!NumpadHome:: send {Enter}{Enter}{NumpadHome} return ^!NumpadUp:: send {Enter}{Enter}{NumpadUp} return ^!NumpadPgUp:: send {Enter}{Enter}{NumpadPgUp} return
Food-buying macro
This macro buys all the 2 cost meat items available at the start screen. Simply go to the item screen, erase the random food items the game starts you with, and press F2. By Napsterbater.
F2:: send {n}{Right}{Down}{Enter} send {n}{Right}{Down}{Enter} send {n}{Right}{Down}{Enter} send {n}{Right}{Down}{Enter} send {n}{Right}{Down}{Enter} send {n}{Right}{Down}{Down}{Down}{Enter} send {n}{Right}{Down}{Down}{Down}{Enter} send {n}{Right}{Down}{Down}{Down}{Down}{Enter} send {n}{Right}{Pgdn}{Enter} send {n}{Right}{Pgdn}{Enter} send {n}{Right}{Pgdn}{Down}{Down}{Down}{Enter} send {n}{Right}{Pgdn}{Down}{Down}{Down}{Enter} send {n}{Right}{Pgdn}{Down}{Down}{Down}{Enter} send {n}{Right}{Pgdn}{Down}{Down}{Down}{Down}{Enter} send {n}{Right}{Pgdn}{Down}{Down}{Down}{Down}{Enter} send {n}{Right}{Up}{Up}{Up}{Up}{Up}{Enter} send {n}{Right}{Up}{Up}{Up}{Up}{Up}{Enter} send {n}{Right}{Up}{Up}{Up}{Up}{Up}{Enter} return
Useless, becuse the types of meat you can take with you varies with each world/civ. It will work with the civ you wrote it for, but not for the overwhelming majority of others--Dorten 05:08, 2 April 2008 (EDT)
Just realized this. Whoops - Napsterbater
I'll go ahead and delete this soon.
Improved Food/Alcohol buying macro
This macro actually buys all the cost-2 food (that was available the time I made this macro), as well as the four types of alcohol. It can deal with meat or drink that you already have, or is not featured currently. Feel free to update this with other types of meat. Also note that this should be used on the Items screen.
WinWait, Dwarf Fortress, IfWinNotActive, Dwarf Fortress, , WinActivate, Dwarf Fortress, WinWaitActive, Dwarf Fortress, send ndwarven{SPACE}ale{RIGHT}{ENTER}{F9} send ndwarven{SPACE}rum{RIGHT}{ENTER}{F9} send ndwarven{SPACE}beer{RIGHT}{ENTER}{F9} send ndwarven{SPACE}wine{RIGHT}{ENTER}{F9} send ndonkey{SPACE}meat{RIGHT}{ENTER}{F9} send nmule{SPACE}meat{RIGHT}{ENTER}{F9} send ndeer{SPACE}meat{RIGHT}{ENTER}{F9} send nracoon{SPACE}meat{RIGHT}{ENTER}{F9} send nfox{SPACE}meat{RIGHT}{ENTER}{F9} send nrhesus{SPACE}macaque{SPACE}meat{RIGHT}{ENTER}{F9} send nhorse{SPACE}meat{RIGHT}{ENTER}{F9} send ngroundhog{SPACE}meat{RIGHT}{ENTER}{F9} send nmountain{SPACE}goat{SPACE}meat{RIGHT}{ENTER}{F9} send nhoary{SPACE}marmot{SPACE}meat{RIGHT}{ENTER}{F9}
Bed Assigning macro
This will assign bedrooms to your dwarfs. Press F3 followed by a single digit indicating how many beds to assign. Can repeat the action, as the number of beds assigned is stored in a counter. Room size is default, but easily edited into the script. By Napsterbater.
bedcounter = 0 F3:: Input, counter, L1 SetKeyDelay, 100 loop %counter% { loop %bedcounter% send {Down} loop % A_Index - 1 send {Down} send {q}{r}{Enter}{a} loop %bedcounter% send {NumPadAdd} loop % A_Index - 1 send {NumPadAdd} send {NumPadAdd}{Enter} send {space}{r} } bedcounter += counter return
Room-designation macros
Valdemar's Designator Macro
This macro can read a spreadsheet and designate rooms according to it. Forum Thread/Download
Fedor's chambered circle
A circular room with eight equal-sized chambers, suitable for everything from housing to workshops to a mausoleum.
See this macro in action
Macro text
Valdemar's bedroom complex
A large fractal bedroom/dining complex, with 56 bedrooms and room for 24 tables.
You can press Alt-B to create a bedroom block, or Alt-C to create a full complex with 4 bedroom blocks and a dining block in the center.
Note - the macro is much faster than the demo movie shows, it is done in under a minute.
Tulip's room macros
Based on the bedroom designs.
^g means alt+g, !g means ctrl+g, and so on. Open up the designations window before using these:
; This will make a basic 'x' pattern workshop/room layout ; and will 'land' back on the same tile it starts on each time, ; which happens to be the center. ; It is modified so that you will have 3 staircases, and an extra tile ; because many workshops do not have corner access. !r:: Send di2{enter}88{enter}4d{enter}4{enter}67{enter}77{enter}66666666 Send {enter}11{enter}1{enter}6{enter}114{enter}4{enter}2{enter}11{enter} Send 66666666{enter}77{enter}7{enter}6{enter}74 return ; This makes GnomeChomsky's Tessellated Apartments, bedrooms only. ; Your cursor will be over the left staircase. !g:: Send i999866{enter}{enter}33332{enter}{enter}11114{enter}{enter} Send d3{enter}22{enter}4{enter}{enter} Send 78{enter}44{enter}8{enter}{enter} Send 96{enter}88{enter}6{enter}{enter} Send 32{enter}66{enter}2{enter}{enter} Send 96{enter}{enter}6{enter}88{enter} Send 96{enter}{enter}8{enter}44{enter} Send 1444{enter}{enter}2{enter}66{enter} Send 88{enter}88{enter}6{enter}{enter} Send 78{enter}{enter}8{enter}44{enter} Send 78{enter}{enter}4{enter}22{enter} Send 14{enter}{enter}2{enter}66{enter} Send 66{enter}22{enter}4{enter}{enter} Send 14{enter}{enter}8{enter}44{enter} Send 78{enter}{enter}4{enter}22{enter} Send 14{enter}{enter}2{enter}66{enter} Send 32{enter}{enter}6{enter}88{enter}7i{enter}{enter} return ; This makes GnomeChomsky's Tessellated Apartments, bedrooms plus dining. ; Everything above applies. ^g:: Send i{enter}{enter}999866{enter}{enter}33332{enter}{enter}11114{enter}{enter}d Send 444{enter}{enter}2{enter}66{enter} Send 32{enter}{enter}6{enter}88{enter} Send 9966{enter}{enter}6{enter}88{enter} Send 96{enter}{enter}8{enter}44{enter} Send 7788{enter}{enter}8{enter}44{enter} Send 78{enter}{enter}4{enter}22{enter} Send 1144{enter}{enter}4{enter}22{enter} Send 14{enter}{enter}2{enter}66{enter} Send 36{enter}8886666666{enter} Send 9{enter}4444444{enter} Send 8{enter}6666{enter}744{enter}{enter} Send 222222441{enter}6666666{enter} Send {enter}22{enter}8{enter}4444{enter} Send 7778 return ; This makes THLawrence's Living Pods (the A is for Arabia). ; Put your cursor where you want the upper left staircase to be. ; Like my other scripts, it recenters on that tile. ; Also, thank you THLawrence, this one was really easy write! !a:: Send i{enter}{enter}d7{enter}7{enter}666{enter}3{enter}22{enter}1{enter}44{enter}7{enter} Send 96666666 Send i{enter}{enter}d7{enter}7{enter}666{enter}3{enter}22{enter}1{enter}44{enter}7{enter} Send 33222 Send i{enter}{enter}d7{enter}7{enter}666{enter}3{enter}22{enter}1{enter}44{enter}7{enter} Send 7444 Send i{enter}{enter}d7{enter}7{enter}666{enter}3{enter}22{enter}1{enter}44{enter}7{enter} Send 9988888 return ; This makes the lobby for THLawrence's Living pods. ^a:: Send i{enter}{enter}d7{enter}7{enter}666{enter}3{enter}66{enter}9{enter}66{enter}3{enter}41i{enter}{enter} Send 36d{enter}1444444{enter} Send 74{enter}1{enter}22{enter}3{enter}3i{enter}{enter}d1{enter}1{enter}666{enter}9{enter} Send 66{enter}3{enter}66{enter}9{enter}88{enter}7{enter}74{enter}1144{enter} Send 36666i{enter}{enter}777777 return
The MOUSE control
For unrivaled mouse control in DF try this DF Mouse script