How-To: Enormous wang tutorial for techie admins

I was asked to write up a tutorial for how I did the enormous dick mod a few days ago, so … yeah, here you go:


  1. PREP: log out of the server. The server can remain running, but the edited character can not be logged in. It's also prudent to make a backup of the game.db database file at this time in case you make a mistake.

  2. EXPORT CHARACTER DATA: grab DB Browser for SQLite. Open your game.db (File -> Open Database) and browse the characters table — find the id for your character. Now browse the properties table and sort by object_id. Find the row of data where the IDs match and the property name is BasePlayerChar_C.CharacterLayout. The value for that field is a BLOB type. You will need your character ID in step 7 so keep it handy. Use the panel on the right to Export it to a .bin file (you may have to select the 'Binary' option from the drop-down first, instead of Text).

  3. VIEW RAW DATA: grab a hex editor (I like XVI32) and open the .bin file and search for the text string Dick"(no joke). Forward 32 bytes and you will find a floating point value at this location of which the current maximum is 1.5 (0x3FC00000). Now, since bytes are written backwards to us humans, it should appear as 00 00 C0 3F in your hex editor if your character currently has the maximum value the slider permits (1.5). The next bytes following these four bytes should be 09 00 00 00 45 79, so if they are not, double-check your position in the data.

  4. EDIT RAW DATA: change these bytes to a value you prefer. I've set it to 3.0, 4.5, and 8.0. 4.5 and 8.0 look the same, so there may be an internal limit in the game. Use the web tool at binaryconvert.com to convert to/from values, you can see that the hex value of 8.0 is 0x41000000, which is 00 00 00 41 in byte format (again: type each group of bytes backwards). Make the relevant changes, making sure that your hex editor is not in byte insert mode (you want to overwrite bytes, not insret new bytes: in XVI32, go to up to 'Tools' and make sure there's a check next to 'Overwrite'). Once you have made the edit, save your changes back to the .bin file.

  5. CONVERT RAW DATA TO FULL HEX: use the web tool at tomeko.net to upload your edited .bin file. Make sure you uncheck both options and click the 'Convert' button. Keep this tab open as you will want to copy the entire output hex output for use in step 7 below.

  6. PREPARE TO IMPORT CHARACTER DATA: back in DB Browser for SQLite, you'll notice you can't edit the BLOB field directly and the Import button doesn't seem functional. Click on the 'Execute SQL' tab. Paste in the following command:

    UPDATE properties SET value = X'zzzzz' WHERE object_id = yyyyy AND name = 'BasePlayerChar_C.CharacterLayout'

  7. WRITE NEW CHARACTER DATA: Change zzzzz to the very long, entire "full hex" text from step 5. Change yyyyy to your character ID as discovered in step 2. Now click the Play icon button above the command (or press F5) to execute the command. You should get a message at the bottom of the window that you can scroll through. At the end it should indicate that 1 row was affected. Write the changes to the database (File -> Write Changes) and then close the database (File -> Close Database).

  8. PROFIT: Log in and enjoy your giant wang.


DISCLAIMER: I am not responsible for you screwing up your database if you make a mistake nor anyone horrified in the process. You're also on your own — I'm not going to walk anyone through this if you get lost.

Enjoy!

Leave a Reply

Your email address will not be published. Required fields are marked *