Jump to content

[fix][9046] send channeling start/update packet


pasdVn

Recommended Posts

Bug: If you cast a channeling spell, only you will see the correct casting bar. If anybody else does (other player, mob, your own pet...) you wont see the bar.

Fix: MSG_CHANNEL_START, and MSG_CHANNEL_UPDATE should not only be send by- and to the casting player, but to all players in range (that means also on channeling casts from creatures).

Patch: http://github.com/pasdVn/mangos/commit/1bc38f77096a4f066083026c854f4cf067db5451

pasdVn

Link to comment
Share on other sites

old bug. But fix need more correct.

m_caster->SendMessageToSet(&data, true);
->
void WorldObject::SendMessageToSet(WorldPacket *data, bool /*bToSelf*/)
toself commented, need ditectly send to player if caster player
m_caster->SendMessageToSet(&data, false);

if (m_caster->GetTypeId() == TYPEID_PLAYER)

((Player*)m_caster)->GetSession()->SendPacket( &data );

Link to comment
Share on other sites

Hmm, are you sure about that? I did not work before at a similar problem, but I think this is done no where else in the code and is not needed (have a lok at send spell go, or send spell start, etc.).

I tried the patch and did not have any problems.

Edit: You took the wrong method (WorldObject::SendMessageToSet). It is redefined for Players -> Polimorphism (Player::SendMessageToSet), what is doning nothing more than you mentioned here.

Link to comment
Share on other sites

  • 2 months later...

confirmed

these packet its not self-send packets

example(sniff):

------ CMSG_SET_ACTIVE_MOVER ------ 
1655160100000007        my guid(unpacked)

------ MSG_CHANNEL_START ------ 
8F16551601075EA70000CB080000
8F1655160107        my packed guid    
5EA70000            spell id    
CB080000            duration    

------ MSG_CHANNEL_UPDATE ------ 
DB0210BE5030F100000000
DB0210BE5030F1        other packed guid
00000000            cast time?

------ MSG_CHANNEL_START ------ 
DB0210BE5030F1638A0000D0070000    
DB0210BE5030F1        other packed guid      
638A0000            spell id    
D0070000            duration    

as you can see in example - i can receive these packets from other units

Added:

lets look at packed guid DB0210BE5030F1, 02 10 00 BE 50 00 30 F1 - it is unpacked version, "30 F1" - guid hightpart - HIGHGUID_UNIT (look at HighGuid enums)

enum HighGuid
{
   HIGHGUID_ITEM           = 0x4000,                       // blizz 4000
   HIGHGUID_CONTAINER      = 0x4000,                       // blizz 4000
   HIGHGUID_PLAYER         = 0x0000,                       // blizz 0000
   HIGHGUID_GAMEOBJECT     = 0xF110,                       // blizz F110
   HIGHGUID_TRANSPORT      = 0xF120,                       // blizz F120 (for GAMEOBJECT_TYPE_TRANSPORT)
   HIGHGUID_UNIT           = 0xF130,                       // blizz F130
   HIGHGUID_PET            = 0xF140,                       // blizz F140
   HIGHGUID_VEHICLE        = 0xF150,                       // blizz F550
   HIGHGUID_DYNAMICOBJECT  = 0xF100,                       // blizz F100
   HIGHGUID_CORPSE         = 0xF101,                       // blizz F100
   HIGHGUID_MO_TRANSPORT   = 0x1FC0,                       // blizz 1FC0 (for GAMEOBJECT_TYPE_MO_TRANSPORT)
};

that mean, like pasdVn said, that not only players can be source of these packets

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