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

DF File Depot

Would be great to get the majority of these uploaded to the Dwarf Fortress File Depot (DFFD). I'm having trouble with some of the currently linked hosting sites. I've just gotten Regional Prospector, so I'll see about getting that one up. Thanks guys! --SlMagnvox 14:33, 25 February 2008 (EST)

External Utilities

I thinking any Utilities that not made specifically for Dwarf fortress should put together at bottom which I have done. My question should we mark area with header say External utilities? Omagaalpha 08:22, 14 February 2008 (EST)

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)
AHK does tend to do wierd stuff in DF, but most of it is predictable. A lot of wierd errors that make no sense can be fixed by explicitely telling the script to focus on the Dwarf Fortress window, as well as generous Sleep statements. I found while rewalling a 30x30 outline, sleep 100 worked fine for the first two sides but posted about half of the second two. Sleep 150 placed the second two somewhat erraticly. Sleep 200 got the second two just fine. --Knivesu 10:22, 23 December 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)

Is there any info on what the offsets (dwarfidpos, critter_start, profession_start) actually refer to? I'm capable enough with finding memory addresses, but exactly what profession_start is eludes me. Even dwarfidpos is a little unclear.

dwarfidpos = Address of Dwarf Race ID
critter_start = Start of Main Creature Vector
profession_start = Offset into Main Creature Vector the array of jobs.

Jifodus 00:41, 7 March 2008 (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)
Megaupload, rapidshare, filefactory, you pick one --Digger 17:40, 24 February 2008 (EST)
Uh, you know there is a special site for uploading DF files now, right? It's linked on the main page. Screw those other guys. --Jackard 17:53, 24 February 2008 (EST)
I say we scrap this section, then. --Digger 18:28, 24 February 2008 (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)

So how do people feel about deleting this section, and probably the heal.exe section above too?
0x517A5D 00:56, 23 December 2007 (EST)

Does anybody know which version works with 38b? And can you also give me the link? --CrazyMcfobo 16:51, 15 April 2008 (EDT)

I went back to look for reveal.exe for the older version of DF I play (I've been sticking to the last good version where we still had the original mountain, 23.13.23a), but the file seems to have been corrupted at that place it's uploaded to. Now when I try to use it it says it's not a valid win32 application, and it's a 0-byte file after unzipping. Is there a good version up somewhere else still? --KittenyKat 11:52, 16 April 2008 (EDT)

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"

Patching Lavasquare

Due to someone being interested in running lavasquare on version 33g, I determined how to patch the exe to work with later versions. With a hex editor, open lavasquare.exe and find and replace with appropriate values (replace the X's with the values underneath for the version you want). I only tested it for 33f, but I'm assuming that the values for 33g are correct (since I got them off the wiki).

(CursorX)
FIND:		EE 57 68 88 E2 8F 00 FF 35
REPLACE:	EE 57 68 XX XX XX 0X FF 35
33f		         88 F2 8F  0
33g		         88 62 90  0
38a		         88 F2 92  0
(CursorY)
FIND:		EC 57 68 8C E2 8F 00 FF 35
REPLACE:	EC 57 68 XX XX XX 0X FF 35
33f		         8C F2 8F  0
33g		         8C 62 90  0
38a		         8C F2 92  0
(CursorZ)
FIND:		E6 57 68 90 E2 8F 00 FF 35
REPLACE:	E6 57 68 XX XX XX 0X FF 35
33f		         90 F2 8F  0
33g		         90 62 90  0
38a		         90 F2 92  0
(MapBlocks)
FIND:		FC 57 68 60 15 46 01 FF 35
REPLACE:	FC 57 68 XX XX XX 0X FF 35
33f		         68 25 46  1
33g		         80 96 46  1
38a		         CC 29 49  1
(To exit immediately after writing, since I don't want to
verify the other offsets)
FIND:		FF 35 5C 80 40 00 E8 88 61 00 00 0F BF 7D
		F8 57 0F BF 7D FA 57 8B 7D FC 81 C7 60 06
		00 00
REPLACE:	FF 35 5C 80 40 00 E8 88 61 00 00 6A FF FF
		25 6C B1 40 00 CC CC CC CC CC CC CC CC CC
		CC CC

-- Jifodus 02:05, 25 December 2007 (EST)

To modify the above for the same behavior as water:

FIND:		07 00 20 00
REPLACE:	07 00 00 00

-- Jifodus 17:09, 29 December 2007 (EST)

Addresses for 0.27.173.38a:

CursorX 0x0092F288
CursorY 0x0092F28C
CursorZ 0x0092F290
MapBlocks 0x014929CC

Offsets are still the same. -- Jifodus 19:14, 7 February 2008 (EST)

Addresses for 0.27.173.38c: (These worked for me, but I'm not an expert on this stuff.)

 CursorX 0x0094228C
 CursorY 0x00942290
 CursorZ 0x00942294
 MapBlocks 0x014A60A4

--Dorundain 22:21, 6 March 2008 (EST)

Where is the Mapblocks found in the hex code? 0x01461560.MAP_DATA_MEM is the closest thing I can find.

--Silveron 08:57, 22 March 2008 (EDT)



Lavasquare Popup?

How do I remove the prompt? It is a painful thing for large projects. The macro below helps some, though. --Jackard 08:05, 4 January 2008 (EST)

#Persistent
SetTimer, CloseLava, 100
return

CloseLava:
WinClose, lcc runtime
return

del::
IfWinActive Dwarf Fortress
{
  send {down}
  run C:\Program Files\Dwarf Fortress\Utilities\lavasquare 33g.exe
  return
}
else
{
  send {del}
  return
}

Lavasquare

Why does it seemingly stop working after a while? It runs but summons no magma/lava. --Spelguru 12:28, 18 January 2008 (EST)

No idea, never run into the problem though I've used it quite thoroughly. --Jackard 17:52, 18 January 2008 (EST)
I've run into this once. Restarting DF fixed the problem. --SquirrelFarmer 09:50, 29 January 2008 (EST)

Water

Could someone make an updated version? Having to slaughter anyone who gets injured just because the rain-filling-ponds doesn't work properly yet is annoying. -Shadow_archamgi, February 27 2008

Weatherdwarf

I can't find the page, but it's a utility that lets you change the temperature of an area and allows for some crazy stuff. Look it up on the forums; I have a community fortress to tend to. --Penguinofhonor 20:18, 3 March 2008 (EST)