188 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
			
		
		
	
	
			188 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
Introduction
 | 
						|
------------
 | 
						|
 | 
						|
DFHack is a Dwarf Fortress memory access library and a set of basic tools using 
 | 
						|
this library. The library is a work in progress, so things might change as more
 | 
						|
tools are written for it.
 | 
						|
 | 
						|
It is an attempt to unite the various ways tools access DF memory and allow for
 | 
						|
easier development of new tools.
 | 
						|
 | 
						|
Getting DFHack
 | 
						|
----------------
 | 
						|
The project is currently hosted on github, for both source and binaries:
 | 
						|
  http://github.com/peterix/dfhack
 | 
						|
 | 
						|
* Packages
 | 
						|
 | 
						|
The library and tools are packaged for Archlinux and are available both in AUR
 | 
						|
and the arch-games repository.
 | 
						|
 | 
						|
The package name is dfhack-git :)
 | 
						|
 | 
						|
Clarification
 | 
						|
-------------
 | 
						|
 | 
						|
'fake SDL.dll', 'SHM', 'libdfconnect' and 'shim library' are basically the same
 | 
						|
thing. A library that sits between DFHack and DF, provides some extra features,
 | 
						|
synchronisation and access control. You should use it for everything that writes
 | 
						|
data back to DF.
 | 
						|
 | 
						|
You'll need the SHM to attach more than one tool to DF on Linux.
 | 
						|
The DFHack version of Dwarf Therapist requires it for writing creature names
 | 
						|
and professions.
 | 
						|
 | 
						|
See 'Using DFHack Tools' for instructions on installing it.
 | 
						|
 | 
						|
Compatibility
 | 
						|
-------------
 | 
						|
 | 
						|
DFHack works on Windows XP, Vista, 7 or any modern Linux distribution.
 | 
						|
 | 
						|
Windows 2000 is currently *not supported* due to missing OS functionality.
 | 
						|
If you know how to easily suspend processes, you can fix it :)
 | 
						|
 | 
						|
OSX is also not supported due to lack of developers with a Mac.
 | 
						|
 | 
						|
Currently supported Dwarf Fortress versions:
 | 
						|
* Windows
 | 
						|
  38a - 40d19_2
 | 
						|
 | 
						|
* Linux
 | 
						|
  40d2 - 40d19
 | 
						|
 | 
						|
Currently supported DF versions *by the SHM*:
 | 
						|
* Windows
 | 
						|
  40d15 - 40d19
 | 
						|
  
 | 
						|
* Linux
 | 
						|
  40d9 - 40d19 (40d2 - 40d8 might work, but are untested)
 | 
						|
 | 
						|
Using the library as a developer
 | 
						|
--------------------------------
 | 
						|
 | 
						|
The library is compilable under Linux with GCC and under Windows with MinGW32
 | 
						|
and MSVC compilers. It is using the cmake build system. See COMPILE for details.
 | 
						|
 | 
						|
DFHack is using the zlib/libpng license. This makes it easy to link to it, use
 | 
						|
it in-source or add your own extensions. Contributing back to the dfhack
 | 
						|
repository is welcome and the right thing to do :)
 | 
						|
 | 
						|
At the time of writing there's no API reference or documentation. The code does
 | 
						|
have a lot of comments though (and getting better all the time).
 | 
						|
 | 
						|
 | 
						|
Using DFHack Tools
 | 
						|
------------------
 | 
						|
 | 
						|
The project comes with a special extra library you should add to your DF
 | 
						|
installation. It's used to boost the transfer speed between DF and DFHack, and
 | 
						|
provide data consistency and synchronization. DFHack will work without the
 | 
						|
library, but at suboptimal speeds and the consistency of data written back
 | 
						|
to DF is questionable.
 | 
						|
 | 
						|
!!!     on Windows this currently only works with DF 40d15 - 40d19_2      !!!
 | 
						|
                  On Linux, it works with DF 40d9 - 40d19
 | 
						|
 | 
						|
!!! use the pre-compiled library intended for your OS and version of DF !!!
 | 
						|
               You can find them in the 'precompiled' folder.
 | 
						|
               
 | 
						|
 | 
						|
 ** Installing on Windows
 | 
						|
 - Open your DF folder, locate SDL.dll and rename it to SDLreal.dll (making
 | 
						|
   a backup of it is a good idea)
 | 
						|
 - Copy the right DFHack SDL.dll into your DF folder.
 | 
						|
 - Restart DF if it is running
 | 
						|
 | 
						|
 ** Unistalling on Windows
 | 
						|
 - Open your DF folder, locate SDL.dll and delete it
 | 
						|
 - Rename SDLreal.dll to SDL.dll
 | 
						|
 - Restart DF if it is running
 | 
						|
 | 
						|
 | 
						|
 ** Installing on Linux
 | 
						|
 - Open your DF folder and the libs folder within it
 | 
						|
 - copy DFHack libdfconnect.so to the libs folder
 | 
						|
 - copy the df-hacked script to your DF folder
 | 
						|
 - Use this new startup script to start DF
 | 
						|
 
 | 
						|
 ** Replacing libdfconnect.so
 | 
						|
 - Make sure you close DF before you replace this file! DF crashes whn you don't
 | 
						|
   close it first!
 | 
						|
 | 
						|
 ** Uninstalling on Linux
 | 
						|
 - Open your DF and DF/libs folders
 | 
						|
 - Delete libdfconnect.so and the dfhacked startup script
 | 
						|
 - Go back to using the df startup script
 | 
						|
 | 
						|
 | 
						|
Tools
 | 
						|
-----
 | 
						|
 | 
						|
All the DFHack tools are terminal programs. This might seem strange to Windows
 | 
						|
users, but these are meant mostly as examples for developers. Still, they can
 | 
						|
be useful and are cross-platform just like the library itself.
 | 
						|
 | 
						|
If the tool writes back to DF's memory, make sure you are using the shared
 | 
						|
memory interface mentioned in the previous section!
 | 
						|
 | 
						|
* catsplosion- Makes all cats pregnant and due in 100 game steps. Use with care.
 | 
						|
 | 
						|
* magma_create - creates 7/7 magma at the DF's cursor
 | 
						|
 | 
						|
* reveal     - plain old reveal tool. It reveals all the map blocks already
 | 
						|
               initialized by DF.
 | 
						|
 | 
						|
* veinlook   - a silly map viewer. It can mass-dig veins in a map square.
 | 
						|
               (Linux only)
 | 
						|
 | 
						|
* prospector - scans the map for minerals. by default it only scans only visible
 | 
						|
               veins. You can make it show hidden things with '-a' and base rock
 | 
						|
               and soil layers with '-b'. These can be combined ('-ab')
 | 
						|
 | 
						|
* cleanmap   - cleans mud, vomit, snow and all kinds of mess from the map.
 | 
						|
               It will clean your irrigated farms too, so consider yourself
 | 
						|
               warned.
 | 
						|
 | 
						|
* incrementalsearch - incremental search utility (Linux only).
 | 
						|
 | 
						|
* bauxite - converts all mechanisms into bauxite mechanisms.
 | 
						|
 | 
						|
* itemdesignator - Allows mass-designating items by type and material - dump,
 | 
						|
                   forbid, melt and set on fire ;)
 | 
						|
* digger         - allows designating tiles for digging/cutting/ramp removal
 | 
						|
 | 
						|
  A list of accepted tile classes:
 | 
						|
        1  = WALL
 | 
						|
        2  = PILLAR
 | 
						|
        3  = FORTIFICATION
 | 
						|
        
 | 
						|
        4  = STAIR_UP
 | 
						|
        5  = STAIR_DOWN
 | 
						|
        6  = STAIR_UPDOWN
 | 
						|
        
 | 
						|
        7  = RAMP
 | 
						|
        8  = RAMP_TOP
 | 
						|
        
 | 
						|
        9  = FLOOR
 | 
						|
        10  = TREE_DEAD
 | 
						|
        11 = TREE_OK
 | 
						|
        12 = SAPLING_DEAD
 | 
						|
        13 = SAPLING_OK
 | 
						|
        14 = SHRUB_DEAD
 | 
						|
        15 = SHRUB_OK
 | 
						|
        16 = BOULDER
 | 
						|
        17 = PEBBLES
 | 
						|
  
 | 
						|
  Example : dfdigger -o 100,100,15 -t 9,10 -m 10
 | 
						|
  This will start looking for trees at coords 100,100,15 and designate ten of them for cutting.
 | 
						|
 | 
						|
 
 | 
						|
Memory offset definitions
 | 
						|
-------------------------
 | 
						|
 | 
						|
The file with memory offset definitions used by dfhack can be found in the
 | 
						|
output folder.
 | 
						|
 | 
						|
~ EOF ~
 |