[diablo 3 MPQ] DRLGParams from worlds menu

User Tag List

Results 1 to 9 of 9
  1. #1
    Valtharak's Avatar Master Sergeant
    Reputation
    51
    Join Date
    Feb 2011
    Posts
    105
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    [diablo 3 MPQ] DRLGParams from worlds

    Any of you were able to read the DRLGParams from the Worlds sno? i always get 0 item.

    and this without using the patchs. i know they blanked the value in some later patch but they should show when not using any patch.

    Need those to know where random generated worlds portal go to and so on for my pathing.

    Any help on this would be welcome.

    [diablo 3 MPQ] DRLGParams from worlds
  2. #2
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Take a look at 0xA065A0, it seems to initialize the world when you enter a new one, it also set's the SNOPower/Levelarea.
    First paramter is the SNOWorld

    The World sno files in memory doesn't seem to have any pointer to the DRLG parameters, it's probablly being sent from the server when you enter a new area now.
    Haven't looked at the files but i think they stopped storing the parameters in the world sno files a few patches ago.

    It's called from their "DispatchServerMessage" func too:
    Code:
        case 0x3A:
          if ( sub_A05460(message->dword8) )
            goto LABEL_491;
          InitializeClientWorld(
            v5->dwordC,                             // SNOWorld
            v5->dword8,                             
            1,
            LODWORD(v5->float10),
            v5->dword14,
            v5->dword18,
            v5->dword1C,
            v5->dword20,
            v5->dword24);
          return 1;
    I guess 0x3A is the "EnteredWorld" opcode.

    Last edited by Nesox; 03-23-2012 at 02:25 AM.

  3. #3
    Valtharak's Avatar Master Sergeant
    Reputation
    51
    Join Date
    Feb 2011
    Posts
    105
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    I don't think the server has to send the DRLGInfo. they just have to send the scene with there position and rotation. i think the DRLG info is more the definition of how to build up a random world. the end result is just a set of scene positioned and rotated in different ways that the server can send.

    i just need the info to get the World/levelarea portal info for the Entrance and Exit of each worlds. I guess i'll mess a bit with it or ask on mooege forum they might have more idea since they were able to get them in the old patch files.

  4. #4
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Valtharak View Post
    I don't think the server has to send the DRLGInfo. they just have to send the scene with there position and rotation. i think the DRLG info is more the definition of how to build up a random world. the end result is just a set of scene positioned and rotated in different ways that the server can send.

    i just need the info to get the World/levelarea portal info for the Entrance and Exit of each worlds. I guess i'll mess a bit with it or ask on mooege forum they might have more idea since they were able to get them in the old patch files.

    I took a look how mooege reads them, they are store in the mpqdata.db sqlite file
    http://dl.dropbox.com/u/4381027/ehl305pc.jpg

    They probablly dumped them when the *.wrl files still contained all the DRLG parameters or something.
    If you only want the Destination World/LevelArea of a portal/MarkerSet they can be found in the MarkerSetSNO.
    Last edited by Nesox; 03-23-2012 at 02:25 AM.

  5. #5
    Valtharak's Avatar Master Sergeant
    Reputation
    51
    Join Date
    Feb 2011
    Posts
    105
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Nesox View Post
    If you only want the Destination World/LevelArea of a portal/MarkerSet they can be found in the MarkerSetSNO.
    Ya i already do that for static worlds. But don't think dynamic world have scenechunk to get the actor and such. you would need the DRLGparams to know what scene are present and get the portal info from the scene.

    Ill dig more into that this weekend.

  6. #6
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Valtharak View Post
    Ya i already do that for static worlds. But don't think dynamic world have scenechunk to get the actor and such. you would need the DRLGparams to know what scene are present and get the portal info from the scene.

    Ill dig more into that this weekend.

    Hmm ok, let me know how it goes
    Last edited by Nesox; 03-23-2012 at 02:26 AM.

  7. #7
    Valtharak's Avatar Master Sergeant
    Reputation
    51
    Join Date
    Feb 2011
    Posts
    105
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Ok i figured how to read DRLGParams data from the unpatched World MPQ. at the end of the World.cs comment out the int6 since that's the offset for the tiles and read the DRLGParams as an object and not a serializable list just add a constructor to DRLGParams that call read . this work for unpatched MPQ not patched mpq. i still see data in patched mpq like commands but it's positioned differently, gonna dig some more.

    Edit: ok ya the data gone in patched MPQ so might aswell use Mooege dumped data. but atleast i know how to get them :P gonna suck for act 2 3 4. we wont have the DRLGParams for those if they are not in MPQ now

    Code:
    stream.Position += 4;
    Float0 = stream.ReadValueF32();
    Int5 = stream.ReadValueS32();
    SNOScript = stream.ReadValueS32();
    //Int6 = stream.ReadValueS32();
    DRLGParamsTest = new FileFormats.DRLGParams(stream);
    stream.Close();
    Last edited by Valtharak; 03-09-2012 at 09:06 PM.

  8. #8
    Nesox's Avatar ★ Elder ★
    Reputation
    1280
    Join Date
    Mar 2007
    Posts
    1,238
    Thanks G/R
    0/3
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Originally Posted by Valtharak View Post
    Ok i figured how to read DRLGParams data from the unpatched World MPQ. at the end of the World.cs comment out the int6 since that's the offset for the tiles and read the DRLGParams as an object and not a serializable list just add a constructor to DRLGParams that call read . this work for unpatched MPQ not patched mpq. i still see data in patched mpq like commands but it's positioned differently, gonna dig some more.

    Edit: ok ya the data gone in patched MPQ so might aswell use Mooege dumped data. but atleast i know how to get them :P gonna suck for act 2 3 4. we wont have the DRLGParams for those if they are not in MPQ now

    Code:
    stream.Position += 4;
    Float0 = stream.ReadValueF32();
    Int5 = stream.ReadValueS32();
    SNOScript = stream.ReadValueS32();
    //Int6 = stream.ReadValueS32();
    DRLGParamsTest = new FileFormats.DRLGParams(stream);
    stream.Close();

    Ok, well then we have to hook the func that is responsible for it and get the parameters when the level generation is done at runtime
    Last edited by Nesox; 03-23-2012 at 02:27 AM.

  9. #9
    Valtharak's Avatar Master Sergeant
    Reputation
    51
    Join Date
    Feb 2011
    Posts
    105
    Thanks G/R
    0/0
    Trade Feedback
    0 (0%)
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    D3 is different then D2 in the way scenes are streamed by the server. you only have scene in memory that are around you. if you move it unload scene too far away. so there no level generation thing like in D2 and since there is no lan play they do need to have this code in. it's all server side. all they have to do is send you this and that scene when you get close.

    Also mooege doesn't unload the scene like live do. had to change my code a bit to copy the memory when adding it to my scene listing rather then refer to it with a pointer. When i would move it would no longer point to the right scene.

    as for the DLRGParam. for the random generated world, mostly dunjon, all you need is to know the entrance and exit. your pathing will require a Explore and find X scene (the exit) logic to move from level to level till you reach your destination. for static world it's easy i preload the scene since i know where they are. i just flag them as explored when i walk by and since some of the scenes have sub scenes that are random, i can delete the one that will not be used in that game. some of the waypoint have different place they can spawn in a levelarea.

    Unless someone found some way to predict a world layout with a seed like D2, i'm all ears.

    The empty part of the map are random generated from a select set of scenes from the World SceneClusterSet values
    [diablo 3 MPQ] DRLGParams from worlds-d3map-jpg
    Last edited by Valtharak; 03-10-2012 at 07:56 PM.

Similar Threads

  1. How to you downgrade from World of Warcraft patch 4.0.3 to 4.0.1?
    By Johnmonkey0 in forum World of Warcraft General
    Replies: 1
    Last Post: 02-08-2011, 06:27 PM
  2. Help with .mpq files from other editors
    By b1ackcat in forum WoW ME Questions and Requests
    Replies: 2
    Last Post: 07-02-2008, 03:39 PM
  3. How do I upload from World of Warcraft Archive
    By spellcsa in forum WoW ME Questions and Requests
    Replies: 1
    Last Post: 11-07-2007, 06:44 AM
  4. Making GameObjects from World Models?
    By Herleybob in forum WoW ME Questions and Requests
    Replies: 7
    Last Post: 10-17-2007, 02:29 PM
  5. Leaked mpq's from the expansion!
    By Gronolith in forum World of Warcraft General
    Replies: 1
    Last Post: 08-26-2006, 04:34 PM
All times are GMT -5. The time now is 08:00 AM. Powered by vBulletin® Version 4.2.3
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. User Alert System provided by Advanced User Tagging (Pro) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
Digital Point modules: Sphinx-based search