Player Exploration menu

User Tag List

Results 1 to 2 of 2
  1. #1
    Patricker's Avatar Member
    Reputation
    6
    Join Date
    Jul 2009
    Posts
    4
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Player Exploration

    Full List of all PLAYER_EXPLORED_ZONES_1 bit offsets! Below follows a complete list (as far as I know it's complete) of all the bit offsets for all of the explored regions. I have provided it as a c# enum. I extracted this from AreaTable.dbc so I'm pretty sure it's complete. The value is stored in what WoWDev (DBFilesClient\AreaTable.dbc - WoWDev) was calling the Flag field, but it wasn't quite what they thought it was I guess.

    The Enum:
    [To many characters to post, download the attached text file for c# code at the bottom of this post.]

    To check if a player has accessed one of these areas you do something like the following.

    Create a bitarray class to hold all of the bool values:
    Code:
    public BitArray ExploredAreas
            {
                get
                {
                    
                    byte[] _data = ProcessManager.WowProcess.ReadBytes(Descriptors + ((uint)Descriptor.ePlayerFields.PLAYER_EXPLORED_ZONES_1 * 4), 512);
    
                    BitArray ba = new BitArray(_data);
    
                    return ba;
                }
    Then you can access the value like so (in this example seeing if the player has explored Ashwood Lake).
    Code:
    bool HasExplored = ExploredAreas((int)PlayerExploredBitIndex.Ashwood_Lake);
    --Peter


    ----Original Post----
    I am trying to find, and if that fails build, an index of areas as they correspond to PLAYER_EXPLORED_ZONES_1.

    I did some searching online but all I could find were examples of how to set all areas to explored on private servers, but not a list of which indexes correspond to what areas.

    I did come up with a way to build such a list myself, but it is a tedious and mind numbing method. So if a list already exists, or if someone can think of a much faster method please let me know.

    Method:
    1. Add some code to read the PLAYER_EXPLORED_ZONES_1 byte[512] data and convert it into a BitArray.
    Code:
    public BitArray ExploredAreas
            {
                get
                {
                    
                    byte[] _data = ProcessManager.WowProcess.ReadBytes(Descriptors + ((uint)Descriptor.ePlayerFields.PLAYER_EXPLORED_ZONES_1 * 4), 512);
    
                    BitArray ba = new BitArray(_data);
    
                    return ba;
                }
    2. Copy the BitArray into a bool[4096]
    Code:
    public bool[] ExploredAreasAsBool
            {
                get
                {
                    bool[] _data = new bool[4096];
    
                    ExploredAreas.CopyTo(_data, 0);
    
                    return _data;
                }
            }
    3. In debug mode in Visual Studio add a break point somewhere, doesn't really matter where, and add a watch for the ExploredAreasAsBool property and then expand the property in the watch window.

    4. With your visual studio debugger paused on some point walk your character in WoW until you see that they have discovered a new area.

    5. In Visual Studio right click the line you are paused at and click set next statement. This will cause all your watched values to update, and any changed ones will appear in red.

    6. Scroll through the list until you find the one that is red (there should only be one as far as I understand it), then mark down the Area/Zone name and the index in a spreadsheet.

    7. Repeat....

    As you can see this is a very tedious process.... Does anyone have any ideas on how it could be done differently? One thing I did try was to set the bits of PLAYER_EXPLORED_ZONES_1 one at a time and then see if I got a message saying I had explored a new area, and I checked the achievements page to see if it was showing a new area as green in the exploration section (I did this with an area that I already knew it's index so it was checkable), but neither of these methods worked. The value did set in memory, and I was able to read it back out with my bit array, but it didn't actually do anything....

    Thanks,
    PeterAttachment 2567
    Attached Files Attached Files
    Last edited by Patricker; 07-19-2009 at 11:24 PM. Reason: FIGURED IT OUT! (updated the file so it would work too...)

    Player Exploration
  2. #2
    vulcanaoc's Avatar Member
    Reputation
    31
    Join Date
    Jul 2008
    Posts
    125
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Well, you could set up a loop that only looks for changes in the bools, and that would remove the need for the really annoying debugging.

    Unless they correspond to some other zone identifiers (which you definitely should verify), you're going to have to find them out manually.

Similar Threads

  1. Replies: 1
    Last Post: 10-31-2012, 08:59 AM
  2. [Macro] Trick players to think your going a different way..
    By janzi9 in forum World of Warcraft Exploits
    Replies: 40
    Last Post: 08-14-2006, 03:46 PM
  3. Player Killing in Cenarion Hold
    By Matt in forum World of Warcraft Exploits
    Replies: 1
    Last Post: 05-10-2006, 06:05 PM
  4. AQ40 Disconnect lazy players
    By Matt in forum World of Warcraft Exploits
    Replies: 0
    Last Post: 05-02-2006, 01:13 PM
All times are GMT -5. The time now is 05:43 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Google Authenticator verification provided by Two-Factor Authentication (Free) - vBulletin Mods & Addons Copyright © 2025 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search