Locating map dimensions in executable


Posts: 17
Joined: Wed May 16, 2012 10:07 pm
PostPosted: Thu Nov 01, 2012 2:16 pm
There is simple method, how you can find and change map dimensions in client.

You need only hex editor (I'm using PSPad HEX).

1) Find constatnt "Felucca" in executable.
2) Get it's offset and add $40000 (IMAGE_BASE)
3) Result number is address of Felucca that you need to find. Rever it by bytes (addesses has 4 bytes. So: $12345678 will be $78563412).
4) Find that reverted number in client. This is pointer to map definition structure.

structure is:
Pointer (4Bytes) - Address of map name
Cardinal (4Bytes) - Map width
Cardinal (4Bytes) - Map Height
Cardinal (4Bytes) - Main map width // Extra height and width is "Dungeons"
Cardinal (4Bytes) - Main map height
24 Bytes - Unknown.
Cardinal (4Bytes) - Map rules ? (1 for Felucca, 0 for others)

And it repeats for every map.

So, if you change this numbers and makes map with new dimensions... You can play on it. Currently UO: Quintessence used it (for now they are in closed alpha, but must be opened near to new year).

PS: I'm not a member of stuff of that shard.
PPS: Sorry for my English.

Site Admin
Posts: 372
Joined: Wed Apr 08, 2009 6:35 am
PostPosted: Thu Nov 01, 2012 3:42 pm
Thank you for sharing!
<Derrick> RunUO AI is kind of a functional prototype, which i have hacked into something resembling OSI behavior, but only by complitcating everything

Posts: 17
Joined: Wed May 16, 2012 10:07 pm
PostPosted: Fri Nov 30, 2012 1:27 am
Some additional info:
24 bytes that unknown... This is indexes for files table. So, if you want to wipe out statics1.mul, than you can redirect it to any clear mul and delete it from installation.

For 7X clients there is 2 tables.. One for classic case, and one for X case.

Return to UO Client

Who is online

Users browsing this forum: No registered users and 3 guests

cron