v50 Steam/Premium information for editors
  • 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.
This notice may be cached—the current version can be found here.

40d Talk:Utilities

From Dwarf Fortress Wiki
Jump to navigation Jump to search

AutoHotKey

Should autohotkey be added as a utility tool for dwarf fortress? I know a few forum users have used it to do repetitive tasks like room designations, maybe it could have its own page and a few dwarf fortress specific script?--Thehunterunseen 20:43, 31 October 2007 (EDT)

Ive been looking for a macro program that works within dwarf fortress and thats free. Havent found a good program thats the combination of both. What do you use? --Mizipzor 20:51, 31 October 2007 (EDT)
autohotkey [1] is a program like that --Thehunterunseen 21:13, 31 October 2007 (EDT)
That was the program I used. Wierd. For me, when I inputed "6" for moving one step right... it moved like 8 steps right or something. Couldnt figure out why. Any ideas? --Mizipzor 22:57, 31 October 2007 (EDT)
I know that shift + = 10×. Could that have something to do with it? --Savok 23:17, 31 October 2007 (EDT)
I use "Send {LeftArrow}{Enter}{Enter}", as a test to simply have the wall/floor im building to be placed one step to the right instead of where the cursor actually is. As previously said, however, it didnt work. --Mizipzor 07:05, 1 November 2007 (EDT)
That might be because the {LeftArrow} part isn't right. It's supposed to be just {Left}. I've downloaded the program myself and am not having any issues with it in DF.. I'm running XP, and use it in fullscreen mode, if that helps any. --Hesitris 18:53, 12 November 2007 (EST)
So could some people who actually know some autohotkey scripts make an article and submit some? --Thehunterunseen 13:37, 6 November 2007 (EST)
I use it and more or less know how it works but as soon as I use it inside DF it bugs out completely and I have no idea why. --Mizipzor 17:56, 6 November 2007 (EST)
I have a number of scripts that I use, but they randomly bug out for no apparent reason. They will work fine in notepad (ie, output everything exactly as I expect), but be only partially executing and then failing in DF. Again, sometimes they work fine. I could post them and how they work if someone wants. FYI, I am on Vista and that may be an issue. --Geofferic 02:39, 19 November 2007 (EST)
I'm not sure how CPU cycles and the buffer interact in Vista. Is your FPS low? Perhaps a key is dropping out of the buffer but DF isn't recognizing it due to lag? Or lag might be making the buffer overflow. It might depend on how autohotkey sends keystrokes, I don't know if it simulates a key press or directly input ssomething into the buffer. You could try a small sleep(50), or the equivalent, in autohotkey and see if that helps. Also, make sure it isn't losing focus for some reason due to background programs (although that would be strange) -Gotthard
I think it's a lag issue in DF. I've yet to figure out exactly what is causing lag for me. I think it's pathing with too many dwarfs and too complex of a hallway system over too many Z levels. Also, I think playing very large maps causes me to lag, as well, but I think that's related to the pathing problem and all those other creatures trying to path. It definitely got better in this version, tho. I will hold off on trying to say definitively what's up with AuthoHotkey until after the next patch. --Geofferic 03:50, 21 November 2007 (EST)

Dwarf Foreman

Foreman is looking at the wrong address for the units... which is not a good sign, since I've seen it in the address it seems to be looking at. I've also seen it bounce around. Definitely not a good sign if the list location isn't static. Or we're just looking at the wrong one completely. --AzureLightning

It's pretty easy to find the addresses for this for new versions. Running the program in the directory with the new version gives you the check= value, and the others are moderately easy to suss. Also, I don't know exactly how it works or why it works, but from C->D->E start and pos were incremented 0x1000 each version, so laziness dictates trying that in future. Qalnor 16:37, 9 December 2007 (EST)


To make foreman compatible with 33e, download the new version and update the config file to the following:

check=00aca9c7
critter_start=0141FA30
dwarfidpos=01240AC8
profession_start=45c

Originally posted by Mu. --Jackard 07:34, 10 December 2007 (EST)

Yourfilehost

Yourfilehost.com has kind of a lousy reputation, and I can confirm it's blocked on certain college networks. Could someone upload these utilities to a more reputable host? -- Mzbundifund 15:55, 04 November 2007 (EDT)

Such as? --Rick 18:03, 4 November 2007 (EST)

heal.exe

heal.exe does not regrow missing limbs. However, "heal -hurt" on the command line brings missing limbs to red status, and "heal" thereafter restores the being to full health.

I propose a -regrow parameter so we don't have to do this workaround, since if it's possible to bring missing limbs from dark grey to red status it's also possible to grow them back.

Also, when using the -hurt parameter, it still says "059E7210 had 31 body parts healed", when it should probably say "wounded". --JT 17:58, 10 November 2007 (EST)

Hmm, if it does heal missing limbs then I just need to change my logic slightly for healing. --Rick 19:01, 10 November 2007 (EST)

reveal.exe

From what I've tested, reveal for 33a does not work for 33b. --Sparksol 13:39, 17 November 2007 (EST)

Correct. It uses hardcoded offsets, which will change every time new code is added to DF.
I have a version hacked for .33b, which I will not distribute out of respect for Rick.
However, if you are skilled with a hex editor, here's what to do: change the first 5 occurances of the pattern 85 45 01 to the pattern 95 45 01. (The 6th occurance of the pattern is a coincidental match and should not be changed.) Then change the pattern 8C 33 89 00 to the pattern 8C 43 89 00.
0x517A5D 02:31, 19 November 2007 (EST)
Actually, as it happens, it looks like Rick has produced updated versions of his tools for .33b. They were built on the 16th. However he hasn't linked to them. I don't know why. The URL they're at requests that no links be made to them, so I'm not going to tell you. Sorry, you'll just have to do the hexedit.
0x517A5D 02:45, 19 November 2007 (EST)
I just havn't mirrored them yet, that's all. --Rick 03:10, 19 November 2007 (EST)
Hey, I'm curious why the file sizes ballooned. Reveal went from 52k to 101k, a doubling in size. Heal grew even more. Maybe you didn't strip debugging info?
0x517A5D 15:42, 19 November 2007 (EST)
Usage of std libraries mostly. I made a library for working with DF so I wouldn't have to keep duplicating code through projects, and when writing it I figured I might as well make it more friendly for me to code in, hence usage of std:: stuff. --Rick 19:00, 19 November 2007 (EST)
Whenever I try to open reveal.exe, the window will open up for a millisecond and then immedietely close. Is this a problem with the program or my windows? I am assuming its windows since everyone else seems to be able to use it. Has anyone else had this problem?--Varsashi 17:59, 26 November 2007 (EST)
It hasn't been updated to work with 33c, and doesn't. Hopefully it will be updated soon. If you're using 33b, it should open and close quickly but reveal all allocated squares. To allocate all squares for revealing, I'll repeat the advice I've seen elsewhere: go to the lowest level and designate the entire level for digging, then remove the dig designation and run the reveal utility. --Janus 20:08, 26 November 2007 (EST)

How to use warp.exe?

How do you use warp.exe? There's no information on how to use these on the page.--Demosthenes 02:10, 21 November 2007 (EST)

warp.exe by itself will list your current cursor position. After you have the position you want to warp a creature to, you do warp.exe <x> <y> <z> as arguments, and it will warp the selected creature (selected with 'V'iew) to that destination, if it can. --Rick 18:10, 21 November 2007 (EST)

StartProfile

Perhaps, I don't understand how to use this correctly. I'm using 33e, and the StartProfile linked in the Utils section. I'm supposed to use this util at the Prepare for the Journey screen, correct? I tried testing the export function with the first dwarf, with no skills assigned. startprofile.exe -x 0 test.txt What I got back was:
Mining: 1348403210
Wood Cutter: 1565676876
Carpenter: 3801123
Engraving: 34079120
Record Keepe: 2293770
Liar: 34341293
Intimidator: 16843009
Conversationalist: 16843009
Comedian: 16843009
Flatterer: 16843009
Consoler: 16843009
Pacifier: 16843009
When I try to set a dwarf's skills using StartProfile I end up with huge amounts of either negative or positive points available, with no changes being made to the dwarf's skills.
--Stu72 09:23, 11 December 2007 (EST)

The offset for the skills must have changed. I guess I should've actually checked that, and not have assumed that just because the other values were correct, the skills were still correct. I'll check it out and post the appropriate fix. -- Jifodus
The appropriate fix is redownloading it, when I hex edited the exe I messed it up field. -- Jifodus
Thanks, works beautifully. It's a terrific time saver. --Stu72 15:30, 14 December 2007 (EST)

How does one use this? The readme isn't very helpful. --Jackard 01:08, 27 November 2007 (EST)

Not knowing exactly what you're having trouble understanding, I'll give examples (the one thing I forgot to add in the readme).
startprofile 0 Miner.txt - This will set the skill profile of the first Dwarf, in the list of units, to the skills in Miner.txt
startprofile 1 Jeweler.txt - This will set the skills on the second Dwarf, in the list of units, to the skills in Jeweler.txt
startprofile -x 3 Customprofile.txt - This will save the set of skills on the fourth Dwarf to Customprofile.txt
startprofile -v0.27.169.33b 0 Miner.txt Same as the first example, except it'll work on the previous version of Dwarf Fortress.
-- Jifodus 03:28, 27 November 2007 (EST)
Thanks, I'll try that out. --Jackard 21:21, 27 November 2007 (EST)

If you wish to edit the executable, you can modify it so that it works with 0.27.169.33d by making the following changes with a hex editor:

Offset   Overwrite With
----------------------------
 2A530 | 98 16 25 01 04 00 00 00 DC 00 00 00 F0 08 00 00 70 00 00 00 C0 01 00 00
 2A6A6 | 30 2E 32 37 2E 31 36 39 2E 33 33 64
 2A77C | 02

-- Jifodus 20:14, 3 December 2007 (EST)

CBW; PUSH SS; AND EAX, 00000401h; ADD AH, BL; ADD [EAX], AL; ...
That makes no sense. Must be missing something off the head end.
3 unknown bytes; ADD [EAX+EAX], EAX; ... No better. Worse, even.
4 unknown bytes; ADD AL, 00h; ADD [EAX], AL; ... Unh uh. Don't think so.
8 unknown bytes; ESC-4(00); ... Floating point? Really? No way.
12 unknown bytes; LOCK OR [EAX], AL ... Insane.
I don't know what those bytes are, but they're not code.—0x517A5D 23:23, 3 December 2007 (EST)
You're right, they're data. First Row is (left to right, 5 dwords): Start Address, Offset from address at start address, Dwarf List begin offset, Starting points offset, Skills offset, remaining skill points points. Second row is a character string (15 chars max). Third row is a dword indicating which data index is default.
//Start Addr, O, Lizt, Ponts, Skll, Remain
{ 0x01251698, 4, 0xDC, 0x8F0, 0x70, 0x1C0 } - The read/write locations and whatnot
"0.27.169.33d" - Used for string comparison (-v flag)
2 - The default version to use is the third in the list (what the above just added).
Configuration data can be found between 'DATA_SET' and 'TES_ATAD'. The list has enough space for 16 versions (3 are now in use). I'll just say I didn't want to have to recompile it for all the versions -- Jifodus 21:52, 6 December 2007 (EST)

If you wish to edit the executable, you can modify it so that it works with 0.27.169.33e by making the following changes with a hex editor:

Offset   Overwrite With
----------------------------
 2A550 |"98 26 25 01"04 00 00 00 DC 00 00 00 F0 08 00 00 70 00 00 00 C0 01 00 00
 2A6B5 | 30 2E 32 37 2E 31 36 39 2E 33 33"65"
 2A77C |"03"

Water

"Note: If there is lava in a murky pool, it will be raised to depth 7/7."

Does anyone else find this hilarious? --Jackard 14:11, 28 November 2007 (EST)