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.

Utility Talk:Tweak

From Dwarf Fortress Wiki
Revision as of 08:04, 11 May 2008 by Corc (talk | contribs) (→‎Reveal)
Jump to navigation Jump to search

Suggested Addition(s)

How hard would it be to adapt Regional Prospector 1 2 to this application?
From what I've seen of your newest tool, it looks like it should become the standard for future 'tweaks' :p
Thanks tons for your contributions to the cause! --Edward 19:41, 24 March 2008 (EDT)

Oh, and one other idea... Perhaps a small readme/guide for each of the tools?
Something like those on the Utilities page would be fine.

It could probably be easily ported but I'm not sure I want to take someone elses work so quickly for Tweak. I am working on that kind of a list (see the Tile Edit link on the core modules list). —Rick 19:49, 24 March 2008 (EDT)
List? RP doesn't make lists that I know of. And I know TileEdit can create magma/lava (which one is it btw? lava I'm guessing, since I don't think it can create a replenishing pipe in it's current form.) but unless I really get desperate, I'm not going to make a huge pool of lava to tap for various oddities. (i.e. traps/constructions) TileEdit's great for occasionally making a single tile of the stuff when it'd otherwise be a pain to get the liquid to the desired point, or for replenishing an already small source. Unless you're planning on making TileEdit capable of modifying regional tiles, (or alternatively, working like a designation for many tiles at once...) I don't see how it could relate to what RP does. --Edward 17:31, 29 March 2008 (EDT)
As far as I can tell, the list in question is a list of readmes/guides like those on the Utilities page.
Magma = lava in an underground square. Lava = magma in an aboveground square. They are identical in all but name. --Savok 19:52, 29 March 2008 (EDT)
Is there an as yet unidentified flag that causes replenishment? --Edward 00:15, 31 March 2008 (EDT)
By 'list' I meant looking up what mineral types, etc, are in the current map. The module is called 'Survey', for obvious reasons. —Rick 00:39, 30 March 2008 (EDT)
Hmm.. well, unless you plan on doing that at an embark level, (as opposed to the in-fort level it sounds like,) it still won't be duplicating any effects that RP currently does. --Edward 00:15, 31 March 2008 (EDT)
I don't intend to duplicate the features of it. —Rick 01:04, 31 March 2008 (EDT)

Help for the Noob(s)

Just downloaded the tweaker after some confusion, for the sake of healing the sole broker of my fort so he can get up and trade smartly enough to save my fort (to be filled with lava, but that's beside the point). Once I started it on up, all the modules but the address lookup were red, and the lookup only turns up <address name="starting_dwarf_count" value="0x00f77927"'.

I'm not entirely sure where to go from here... Any guide forthcoming?

Red modules mean they are incompatible, I'm going to assume you are running on .38b, the latest is .38c, which Tweak has full support for. I did not bother to provide full support for .38b. —Rick 05:34, 29 March 2008 (EDT)

Error report

For some reason, the latest version (1.2.0.1) crashes whenever I try to run it. This is with or without DF running. Version 1.1.0.0 on the other hand worked fine for me, and still does. This is the debugging info returned for the crash in 1.2.0.1:

An unhandled exception of type 'System.IO.FileNotFoundException' occurred in Gibbed.DwarfFortress.Tweak.exe

Additional information: Could not load file or assembly
'System.Core, Version=3.5.0.0, Culture=neutral,  PublicKeyToken=b77a5c561934e089'
or one of its dependencies. The system cannot find the file specified.

This is with it directly extracted from the zip with proper folder structure, no changes made. I've also tried moving it out to a root folder on the drive in case the long path was confusing it with no success. --Janus 01:04, 1 April 2008 (EDT)

Sounds like you don't have .NET 3.5 installed. —Rick 01:53, 1 April 2008 (EDT)
Did version 1.1.0.0 not require it? That version has been working fine, and I could have sworn I had to install the .NET 3.5 Framework to get it working.
However, whatever the case, I've just (re?)installed the 3.5 framework and that does indeed seem to have taken care of it. Thanks. --Janus 02:38, 1 April 2008 (EDT)
I wasn't using any features of 3.5 yet -- which changed with 1.2.0.0. —Rick 03:40, 1 April 2008 (EDT)

Found an error in the adjust profile module, happens when I click the "reset profile" button when "reset/read/write all" is checked.

 System.ArgumentException: 'child' is not a child control of this parent.
  at System.Windows.Forms.Control.ControlCollection.GetChildIndex(Control child, Boolean throwException)
  at System.Windows.Forms.Control.ControlCollection.GetChildIndex(Control child)
  at Rinn.DwarfFortress.Tools.AdjustProfile.Configuration.textBox_TextChanged(Object sender, EventArgs e)
  at System.Windows.Forms.Control.OnTextChanged(EventArgs e)
  at System.Windows.Forms.TextBoxBase.OnTextChanged(EventArgs e)
  at System.Windows.Forms.Control.set_Text(String value)
  at System.Windows.Forms.TextBoxBase.set_Text(String value)
  at System.Windows.Forms.TextBox.set_Text(String value)
  at Rinn.DwarfFortress.Tools.AdjustProfile.Configuration.buttonReset_Click(Object sender, EventArgs e)
  at System.Windows.Forms.Control.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnClick(EventArgs e)
  at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
  at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
  at System.Windows.Forms.Control.WndProc(Message& m)
  at System.Windows.Forms.ButtonBase.WndProc(Message& m)
  at System.Windows.Forms.Button.WndProc(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
  at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
  at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Cheapweed 18:01, 12 April 2008 (EDT)

Please report that on Rinn's AdjustProfile talk pageRick 22:33, 12 April 2008 (EDT)

NET 3.5 Compatability

Just a quick FYI: Those of us on 2000 cannot (as far as I've been able to determine) install .NET 3.5, which makes it impossible to use the latest version of Tweak. Keeping the 1.1 version online maintains availability of this invaluable tool to those of us who refuse to be infected with the XP virus. —Rochndil 14:49, 3 April 2008 (EDT)

While I do use .NET 3.5 features, I will see if I can move to .NET 2.0 (or make a 2.0 compatible version). —Rick 22:58, 3 April 2008 (EDT)

Blue modules

I just installed Tweak for the first time and I seem to have a problem. The buttons beside all the modules are blue, not green like in the picture, and the modules don't appear to do anything. I am running DF version 0.27.176.38c and Tweak version 1.2.0.0. I tied to update to version 1.2.0.1 but it still shows as the old version.

If your Tile Edit is 1.1, not 1.0, you have 1.2.0.1. As for blue modules, you need to 'Select Process' before you can use anything. There is an option to automatically select a process on startup. Once you do this, modules will either turn red or green as like before. —Rick 22:58, 3 April 2008 (EDT)

Windows Installer 3.1

It says I need Windows Installer 3.1. Help? --Savok 19:12, 3 April 2008 (EDT)

Tweak does, or the .NET 3.5 install does? —Rick 22:58, 3 April 2008 (EDT)
Sorry. .NET 3.5 install does. --Savok 11:41, 4 April 2008 (EDT)
What operating system are you using? Windows Installer 3.1 RedistributableRick 12:16, 4 April 2008 (EDT)
Windows XP Home Edition Version 2002 Service Pack 2.
Out of curiosity, what does that 3.1 installer do? --Savok 15:55, 4 April 2008 (EDT)
It's for MSI installers I would assume. Though I'm not sure how you don't have the Windows Installer 3.1 on XP. —Rick 22:49, 4 April 2008 (EDT)

Freezing Tile Edit

For some reason, whenever I edit a tile using the Tile Edit programme, the next dwarf to step on the tile freezes to death (as will the many dwarves who come to loot the corpse). In the tile edit window, in the temperature section, it shows 0 in the first box (always) and another number of around 12000 in the second. The values by themselves give no indication as to the temperature, and even when I leave them alone, simply changing the tile will result in it becoming a freezing tile of death. I have no idea if anyone else is experiencing this with tile edit, or whether I'm doing something horribly wrong. unsigned comment by Maw3193

I get this whenever I try to add water to a square. The water freezes into a block of absolute-zero ice, and freezes to death anybody who steps on it. It doesn't happen when I add magma, or change magma depth. The title bar says version 1.2.0.0, but TileEdit is 1.1 so I guess it's actually 1.2.0.1 (see above) Anydwarf 12:56, 17 April 2008 (EDT)
Tile Edit is broken like this. You need to manually set a temperature for EVERY tile you edit. Rick, fix it! >8( --GreyMario 15:44, 3 May 2008 (EDT)
Also, as an addendum, the top temperature is the NEW temperature for the tile, the bottom temperature is the CURRENT temperature. --GreyMario 15:45, 3 May 2008 (EDT)
Before editing any of the tile, press Reset first, it should fill the first temperature in for you. --SP2 19:20, 7 May 2008 (EDT)
Still doesn't work for me, I've tried all of this. I've set the temperature about five different times.. still the freezing tile of DOOM. --Jaxstrife 20:51, 7 May 2008 (EDT)
I've identified the bug and it will be fixed in the next release. —Rick 08:16, 9 May 2008 (EDT)

Developer page

I'm interested in making a module for Tweak, will there be more info soon about contributing to it? (if there is a page I couldn't find that talks about it, feel free to let me know :) --Corc

There hasn't really been any demand for it, but now that there is I'll fill out some info for you. —Rick 01:33, 27 April 2008 (EDT)
I've added some preliminary information to the development page. —Rick 17:41, 30 April 2008 (EDT)

How easy would it be to get started with writing a module? I assume Tweak handles the memory editing, but does it hand the module a bunch of bytes, or a fully parsed structure? I'd be interested in at least trying to write up a module.. Maybe you could just post the source for Heal or one of the other simple modules. Anydwarf 18:57, 29 April 2008 (EDT)

I would just like to add my vote for a .NET 2.0 version since 3+ causes severe problems on my system trying to connect to M$ all the time :P

I downloaded 3.5 and even got the express versions of Visual Studio to play with. I believe there is an option to "check" when you install that will stop it from contacting MS--I was asked a few times.
--Corc 23:57, 28 April 2008 (EDT)
Tweak's memory access doesn't deal with structures, but does allow for easy reading of common data types (and raw memory, if that's your deal). Reading structures may come in the future, though. —Rick 17:41, 30 April 2008 (EDT)

Adjust Start: Less Than Seven Dwarves Crashes Game Upon Embarking

Crash replicated on two different computers both running windows XP both using .38c version of DF. Different parameter set worlds and different local areas still results in crash, as does both embarking carefully and not carefully. When it crashes I get an error message from windows saying that "dwarffort.exe has encountered a problem and needs to close." I have tested this for 1, 4, and 6 dwarves with the game crashing, and found that with 10 dwarves it did not crash.

Reveal

(Debated about putting this here or on your sample code discussion.) To test out making a new module (very easy btw, awesome) I modified reveal to just reveal interesting stuff like ore and gems. Instead of releasing a whole new (very similar and 99% your code) module maybe you could add a quick if statement/popup that people could check when they run it? Basically what I did was inside the nested for loops I added in getting the "type" data and if the type was for an event, B8 01, then I'd let it do your unhide bit.

memory.Read(block + designation, ref data);
memory.Read(block + typeoffset, ref types); // added types, half the size of data, (256 * 2)
for (int i = 0; i < 16 * 16; i++)
{
   byte[] temp = BitConverter.GetBytes(BitConverter.ToInt16(types, i * 2)); // actual type
   if (temp[0] == 184) // I found that 0xB8 is all that is needed to check
   {
      byte[] newdata = BitConverter.GetBytes(BitConverter.ToUInt32(data, i * 4) & ~0x200);
      data[(i * 4) + 0] = newdata[0];
      data[(i * 4) + 1] = newdata[1];
      data[(i * 4) + 2] = newdata[2];
      data[(i * 4) + 3] = newdata[3];   
   }
}

This unhides only Gems, Ore, "Special" Stone like Orthocast, adamantine and any other out of the ordinary biome stone.

I thought about making a crazy convoluted module that would scan the map for types of events and let the user enable the ones they wanted unhidden and then unhide them. But, after going into the event list and finding event IDs (I've got a complete list now) I found it to be too crazy... actually as I typed that I figured out how I could do it with about a forth of what I had coded earlier. --Corc 04:04, 11 May 2008 (EDT)