Jump to content

Two packet questions


Guest DJNefast

Recommended Posts

Hello all,

im searching about informations about two packets not implemented in Mangos.

I know the first : SMSG_INSTANCE_LOCK_WARNING_QUERY

i think it's used to ask a client if he really want to bind to an instance, but after some tries i havent found any informations about this packet and sniffing with WPE dont return very good informations because of too many packets :(

The second question, i search the packet which permit to add the target to a mob in the interface like halion or cannoneer battle or dreamwalker. Somebody have an idea about this packet ? (sorry i havent any screen, i hope someone understand what i said)

Link to comment
Share on other sites

Hello all,

im searching about informations about two packets not implemented in Mangos.

I know the first : SMSG_INSTANCE_LOCK_WARNING_QUERY

i think it's used to ask a client if he really want to bind to an instance, but after some tries i havent found any informations about this packet and sniffing with WPE dont return very good informations because of too many packets :(

The second question, i search the packet which permit to add the target to a mob in the interface like halion or cannoneer battle or dreamwalker. Somebody have an idea about this packet ? (sorry i havent any screen, i hope someone understand what i said)

SMSG_INSTANCE_LOCK_WARNING_QUERY opcode triggers following script events on client side:

(if timer <= 0)
   EVENT_INSTANCE_LOCK_STOP
else
   EVENT_INSTANCE_LOCK_START

Related lua functions:

lockTimeLeft, isExtended, encountersTotal, encountersComplete = GetInstanceLockTimeRemaining()

Packet structure:

uint32 lockTimeLeft; // in milliseconds
uint32 completedEncountersMask;
uint8 isExtended;

DungeonEncounter.dbc structure (in client memory)

struct DungeonEncounterEntry
{
 int id;
 int mapId;
 int instanceDifficulty;
 int noIdea;
 int encounterIndex;
 char *name;  // char* name[16]; int nameFlags;
 int noIdea2;
};

void __cdecl sub_553830(int mapId, int instanceDifficulty, int encountersCompletedMask, int *encountersTotal, int *encountersCompleted)
{
 int numRows; // eax@1
 int rowCounter; // edx@1
 int nextRow; // esi@2
 DungeonEncounterEntry *encounter; // eax@5

 *encountersTotal = 0;
 *encountersCompleted = 0;
 numRows = g_DungeonEncounterDB.numRows;
 rowCounter = 0;
 if ( g_DungeonEncounterDB.numRows > 0 )
 {
     nextRow = 0;
     do
     {
         if ( rowCounter < 0 || rowCounter >= numRows )
             encounter = 0;
         else
             encounter = (DungeonEncounterEntry *)((char *)g_DungeonEncounterDB.FirstRow + nextRow);
         if ( encounter->mapId == mapId )
         {
             if ( encounter->instanceDifficulty == instanceDifficulty )
             {
                 ++*encountersTotal;
                 if ( (1 << encounter->encounterIndex) & encountersCompletedMask )
                     ++*encountersCompleted;
             }
         }
         numRows = g_DungeonEncounterDB.numRows;
         ++rowCounter;
         nextRow += 28;                          // sizeof(DungeonEncounterEntry)
     }
     while ( rowCounter < g_DungeonEncounterDB.numRows );
 }
}

And for the rest - I have no idea what you talking about.

Link to comment
Share on other sites

DungeonEncounter.dbc structure (in client memory)

struct DungeonEncounterEntry
{
 int id;
 int mapId;
 int instanceDifficulty;
 int noIdea;
 int encounterIndex;
 char *name;  // char* name[16]; int nameFlags;
 int noIdea2;
};

noIdea --> The max value of each mapId-InstanceDifficulty pair is final boss/event. Not always being the max encounterIndex.

I guess encounterIndex is the number of the boss (or more generally the encounter) in the instance/raid.

Example in ICC :

Lord Marrowgar -> encounterIndex = 0

Deathwhisper -> encounterIndex = 1

Gunship Battle -> encounterIndex = 2

etc

(I'm not sure)

When you join a raid with save, asap you get in the instance you get a popup asking if you wanna get linked to that save. The popup shows the bosses that have been killed, encounterIndex is the index in the mask variable.

Same with proposals in Dungeon Finder, when you join in the middle of a dungeon in progress.

Link to comment
Share on other sites

the two packets i search are :

- for instance, on Blizz when you enter a bound instance, a popup was sent to client to ask him if he wants to bind (if i can remember with 1 min remaining) to this instance. I search this popup to implement it on mangos.

- second, when you fight Dreamwalker, Halion or Cannoneer Battle, a portrait of the boss appears like in arenas when you can always see the state (life, head and level) of the boss, like focus portrait when you left click on a mob and do focusing. I search to make this portrait appear for thoses bosses to be really blizzlike. Can you help me ?

Link to comment
Share on other sites

its not world state :

example for icc

254,631,4859,0,"",0.000000,0.000000,"Tentatives héroïques ratées avant le repli : %4941w sur %4942w",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712190,0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,4940,0,"",0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,"",0,0,0.000000,

253,631,4889,0,"",0.000000,0.000000,"Tentatives héroïques ratées avant le repli : %4941w sur %4942w",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712190,0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,4940,0,"",0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,"",0,0,0.000000,

251,631,4890,0,"",0.000000,0.000000,"Tentatives héroïques ratées avant le repli : %4941w sur %4942w",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712190,0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,4940,0,"",0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,"",0,0,0.000000,

252,631,4891,0,"",0.000000,0.000000,"Tentatives héroïques ratées avant le repli : %4941w sur %4942w",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712190,0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,4940,0,"",0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,"",0,0,0.000000,

255,631,4910,0,"",0.000000,0.000000,"Tentatives héroïques ratées avant le repli : %4941w sur %4942w",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712190,0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,4940,0,"",0.000000,0.000000,"",0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,0.000000,16712188,"",0,0,0.000000,

there isnt any entry about dreamwalker or battle of canoneers

Link to comment
Share on other sites

- for instance, on Blizz when you enter a bound instance, a popup was sent to client to ask him if he wants to bind (if i can remember with 1 min remaining) to this instance. I search this popup to implement it on mangos.

SMSG_INSTANCE_LOCK_WARNING_QUERY is exactly what you looking for.

- second, when you fight Dreamwalker, Halion or Cannoneer Battle, a portrait of the boss appears like in arenas when you can always see the state (life, head and level) of the boss, like focus portrait when you left click on a mob and do focusing. I search to make this portrait appear for thoses bosses to be really blizzlike. Can you help me ?

I think I figured that out:

SMSG_GAMEOBJECT_SPAWN_ANIM_OBSOLETE - should be renamed to something more correct, like SMSG_UPDATE_INSTANCE_ENCOUNTER_UNIT. This opcode fires INSTANCE_ENCOUNTER_ENGAGE_UNIT script event on client side.

uint32 type;
switch(type)
{
   // I guess there's should be add/update/remove types below
   case 0: // ENCOUNTER_UNIT
   case 1: // ENCOUNTER_UNIT
   case 2: // ENCOUNTER_UNIT
       PGUID unitGuid;
       uint8 unk1;
       break;
   case 3: // ENCOUNTER_TIMER
   case 4: // ENCOUNTER_OBJECTIVE
   case 6: // ENCOUNTER_OBJECTIVE
       uint8 unk2;
       break;
   case 5: // ?
       uint8 unk3;
       uint8 unk4;
       break;
   case 7: // ?
       // clears stuff?
       break;
   default:
       break;
}

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use