Seaxouri
09-21-2006, 05:28 AM
First and foremost, you should read the sticky in this section entitled "DEVS: Locating offsets - part 1". It explains a lot of the basics.
Finding offsets was not terribly easy to do, now it is. In December 2005, I added the first attempt at making the job of locating offsets easier. In January of 2006, I overhauled the server, changing this feature dramatically. It is now very, very easy for anyone to locate primary/critical offsets using this feature.
I did this so other people could find offsets without my help. There may come a time when I am gone from the world of EQ, but I would like to think that MySEQ Open lives on past that. This feature has proven to work very well over the last 9 months. Several people have stepped up to the plate and gotten valid offsets within 24 hours after a patch. I like that.
The instructions are located in the myseqserver.ini itself, located below the actual offsets. I suggest printing them out and reading it over. It may take a little bit to understand it, but once you grasp it, things become easy.
I have also cut and paste the current instructions below for people to browse. These instructions are current as of September 2006, but may have grown stale. Please consult the actual ini file for the latest information.
Note: There is a lockout time on these forums, whereby once a post has aged to a point, it can no longer be edited.
# Using the new Debug CLI
# =======================
# To start the server in debug mode, run the server with the 'debug' argument:
#
# myseqserver debug
#
# You will see the menu, which looks like this:
#
# Debug Menu
# =======================
# d) display current offsets
# r) reload all offsets from INI file
# spo) set a primary offset (index/name) (hex value)
# sso) set a secondary offset (index/name) (hex value)
# ez) examine raw data using pZone
# et) examine raw data using pTarget
# fz) find zonename using pZone (zonename)
# ft) find spawnname using pTarget (spawnname)
# fs) find spawnname using pSelf (spawnname)
# ps) process a spawn entity using pSelf
# pt) process a spawn entity using pTarget
# sp) scan process names (process name)
# ws) walk the spawnlist (reverse) using pSelf
# wt) walk the spawnlist (reverse) using pTarget
# vs) walk the spawnlist (forward) using pSelf
# vt) walk the spawnlist (forward) using pTarget
# x) exit
#
# >
#
# To select a command, type it in and press Enter. Some commands require
# arguments, which are indicated in parenthesis.
#
# If you are having troubling just accessing the EQ process, first try the 'scan process names' command:
# > sp
#
# You can provide an optional process name to attempt to scan for and access, but if you do not provide
# any arguments, then it will default to 'eqgame'. You will see a list of processes detected on your system
# and if a match is found, it will try and access it, providing feedback on the results. Prior to server v1.19.1,
# this was a case-sensitive match. For server v1.19.1 and higher, the check is case-insensitive. We had some
# problems on a Win2K system regarding this.
#
# When new offsets are needed, you can start the server in debug mode and it will use the
# old offsets as starting points to locate the new offsets.
#
# The first thing is to locate the zonename. Just enter a zone that you know the name of, like the Bazaar,
# and use the "fz" command along with the appropriate shortname for the zone:
# > fz Bazaar
#
# You should see a list of matches. Anyone of them could potentially be a valid pZone value. Select one and
# place it in the INI file above under ZoneAddr. Now press 'r' to reload the INI file into the debug server.
# Press 'd' to verify your change was actually loaded.
#
# Next we want to locate the pTarget value, stored above as TargetAddr. Inside the game, select any target NPC
# or PC other than yourself. It is best to select a uniquely named NPC, like "Boss Hogg". Do not select an NPC
# with a re-used name, like "a rat". Now you need to determine the hidden name of that NPC. To do this, replace
# any spaces in the name with underscores, and stick a 00 on the end. So "Boss Hogg" becomes "Boss_Hogg00".
# Use this hidden name as the sole argument to the 'ft' command:
# > ft Boss_Hogg00
#
# You should see a list of matches. Anyone of them could potentially be a valid pTarget. Select one and
# place it in the INI file above under TargetAddr. Press 'r' to reload the INI file.
#
# Next we want to locate the pSpawnlist value, stored above as SpawnHeaderAddr. This is very easy once you have
# pTarget done above. Simply select any target in the game and use the 'wt' command:
# > wt
#
# You should see a long list of spawn information dump out. At the end, we do an automatic scan looking for
# where that entry point pointer lives. You should see a list of matches. Anyone of them could potentially be
# a valid pSpawnlist. Select one and place it in the INI file above under SpawnHeaderAddr. Press 'r' to reload
# the INI file.
#
# Last we want to locate the pSelf value, store above as CharInfo. Inside the game, select yourself as the
# target (press F1) and use the 'ft' command along with your characters first name:
# > ft Yourfirstname
#
# You should see a list of matches. Anyone of them could potentially be a valid pSelf. Select one and
# place it in the INI file above under CharInfo. Press 'r' to reload the INI file.
#
# You can now exit the server (press 'x') and restart it in normal mode. Try attaching the client to it.
# As long as none of the secondary offsets have changed, it should work. If it only works for a short time
# and then stops working, repeat the above procedure, but this time make different selections in the match
# lists.
#
# If the secondary offsets have changed, or the basic design of how they obtain spawn information, the server
# may need to be updated. The other debug options can be used to aid in locating secondary offsets, but it
# is so involved that it is probably best to use a full blown RAM editor. Please visit our forums to learn
# how to help ( http://www.showeq.net/ (http://www.showeq.net/) and look for the MySEQ subforums).
#
# Notes:
# - All string searches are case sensitive!
# - As you get matches, write them all down! If a function works for a minute or so and then stops working, try the
# next match in the list.
# - If you use the spo/sso functions, the changes are NOT made in the INI file. Once you exit, those changes are lost.
# - Only reverse walks (wt/ws) will scan for entry point pointers. Forward walks will just show the spawns and return.
Finding offsets was not terribly easy to do, now it is. In December 2005, I added the first attempt at making the job of locating offsets easier. In January of 2006, I overhauled the server, changing this feature dramatically. It is now very, very easy for anyone to locate primary/critical offsets using this feature.
I did this so other people could find offsets without my help. There may come a time when I am gone from the world of EQ, but I would like to think that MySEQ Open lives on past that. This feature has proven to work very well over the last 9 months. Several people have stepped up to the plate and gotten valid offsets within 24 hours after a patch. I like that.
The instructions are located in the myseqserver.ini itself, located below the actual offsets. I suggest printing them out and reading it over. It may take a little bit to understand it, but once you grasp it, things become easy.
I have also cut and paste the current instructions below for people to browse. These instructions are current as of September 2006, but may have grown stale. Please consult the actual ini file for the latest information.
Note: There is a lockout time on these forums, whereby once a post has aged to a point, it can no longer be edited.
# Using the new Debug CLI
# =======================
# To start the server in debug mode, run the server with the 'debug' argument:
#
# myseqserver debug
#
# You will see the menu, which looks like this:
#
# Debug Menu
# =======================
# d) display current offsets
# r) reload all offsets from INI file
# spo) set a primary offset (index/name) (hex value)
# sso) set a secondary offset (index/name) (hex value)
# ez) examine raw data using pZone
# et) examine raw data using pTarget
# fz) find zonename using pZone (zonename)
# ft) find spawnname using pTarget (spawnname)
# fs) find spawnname using pSelf (spawnname)
# ps) process a spawn entity using pSelf
# pt) process a spawn entity using pTarget
# sp) scan process names (process name)
# ws) walk the spawnlist (reverse) using pSelf
# wt) walk the spawnlist (reverse) using pTarget
# vs) walk the spawnlist (forward) using pSelf
# vt) walk the spawnlist (forward) using pTarget
# x) exit
#
# >
#
# To select a command, type it in and press Enter. Some commands require
# arguments, which are indicated in parenthesis.
#
# If you are having troubling just accessing the EQ process, first try the 'scan process names' command:
# > sp
#
# You can provide an optional process name to attempt to scan for and access, but if you do not provide
# any arguments, then it will default to 'eqgame'. You will see a list of processes detected on your system
# and if a match is found, it will try and access it, providing feedback on the results. Prior to server v1.19.1,
# this was a case-sensitive match. For server v1.19.1 and higher, the check is case-insensitive. We had some
# problems on a Win2K system regarding this.
#
# When new offsets are needed, you can start the server in debug mode and it will use the
# old offsets as starting points to locate the new offsets.
#
# The first thing is to locate the zonename. Just enter a zone that you know the name of, like the Bazaar,
# and use the "fz" command along with the appropriate shortname for the zone:
# > fz Bazaar
#
# You should see a list of matches. Anyone of them could potentially be a valid pZone value. Select one and
# place it in the INI file above under ZoneAddr. Now press 'r' to reload the INI file into the debug server.
# Press 'd' to verify your change was actually loaded.
#
# Next we want to locate the pTarget value, stored above as TargetAddr. Inside the game, select any target NPC
# or PC other than yourself. It is best to select a uniquely named NPC, like "Boss Hogg". Do not select an NPC
# with a re-used name, like "a rat". Now you need to determine the hidden name of that NPC. To do this, replace
# any spaces in the name with underscores, and stick a 00 on the end. So "Boss Hogg" becomes "Boss_Hogg00".
# Use this hidden name as the sole argument to the 'ft' command:
# > ft Boss_Hogg00
#
# You should see a list of matches. Anyone of them could potentially be a valid pTarget. Select one and
# place it in the INI file above under TargetAddr. Press 'r' to reload the INI file.
#
# Next we want to locate the pSpawnlist value, stored above as SpawnHeaderAddr. This is very easy once you have
# pTarget done above. Simply select any target in the game and use the 'wt' command:
# > wt
#
# You should see a long list of spawn information dump out. At the end, we do an automatic scan looking for
# where that entry point pointer lives. You should see a list of matches. Anyone of them could potentially be
# a valid pSpawnlist. Select one and place it in the INI file above under SpawnHeaderAddr. Press 'r' to reload
# the INI file.
#
# Last we want to locate the pSelf value, store above as CharInfo. Inside the game, select yourself as the
# target (press F1) and use the 'ft' command along with your characters first name:
# > ft Yourfirstname
#
# You should see a list of matches. Anyone of them could potentially be a valid pSelf. Select one and
# place it in the INI file above under CharInfo. Press 'r' to reload the INI file.
#
# You can now exit the server (press 'x') and restart it in normal mode. Try attaching the client to it.
# As long as none of the secondary offsets have changed, it should work. If it only works for a short time
# and then stops working, repeat the above procedure, but this time make different selections in the match
# lists.
#
# If the secondary offsets have changed, or the basic design of how they obtain spawn information, the server
# may need to be updated. The other debug options can be used to aid in locating secondary offsets, but it
# is so involved that it is probably best to use a full blown RAM editor. Please visit our forums to learn
# how to help ( http://www.showeq.net/ (http://www.showeq.net/) and look for the MySEQ subforums).
#
# Notes:
# - All string searches are case sensitive!
# - As you get matches, write them all down! If a function works for a minute or so and then stops working, try the
# next match in the list.
# - If you use the spo/sso functions, the changes are NOT made in the INI file. Once you exit, those changes are lost.
# - Only reverse walks (wt/ws) will scan for entry point pointers. Forward walks will just show the spawns and return.