diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 93 |
1 files changed, 6 insertions, 87 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0f01e6c129e..d22aba92f9e 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9053,7 +9053,6 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) { // data depends on zoneid/mapid... Battleground* bg = GetBattleground(); - uint16 NumberOfFields = 0; uint32 mapid = GetMapId(); OutdoorPvP* pvp = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneid); InstanceScript* instance = GetInstanceScript(); @@ -9061,94 +9060,12 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) sLog->outDebug(LOG_FILTER_NETWORKIO, "Sending SMSG_INIT_WORLD_STATES to Map: %u, Zone: %u", mapid, zoneid); - // may be exist better way to do this... - switch (zoneid) - { - case 0: - case 1: - case 4: - case 8: - case 10: - case 11: - case 12: - case 36: - case 38: - case 40: - case 41: - case 51: - case 267: - case 1519: - case 1537: - case 2257: - case 2918: - NumberOfFields = 8; - break; - case 139: - NumberOfFields = 41; - break; - case 1377: - NumberOfFields = 15; - break; - case 2597: - NumberOfFields = 83; - break; - case 3277: - NumberOfFields = 18; - break; - case 3358: - case 3820: - NumberOfFields = 40; - break; - case 3483: - NumberOfFields = 27; - break; - case 3518: - NumberOfFields = 39; - break; - case 3519: - NumberOfFields = 38; - break; - case 3521: - NumberOfFields = 37; - break; - case 3698: - case 3702: - case 3968: - case 4378: - case 3703: - NumberOfFields = 11; - break; - case 4384: - NumberOfFields = 30; - break; - case 4710: - NumberOfFields = 28; - break; - case 4812: // Icecrown Citadel - case 4100: // The Culling of Stratholme - NumberOfFields = 13; - break; - case 4987: // The Ruby Sanctum - NumberOfFields = 3; - break; - case 4273: // Ulduar - NumberOfFields = 10; - break; - case 4197: // Wintergrasp - /// Use the max here, and fill with zeros if missing. - NumberOfFields = 10 + WG_MAX_OBJ + WG_MAX_WORKSHOP; - break; - default: - NumberOfFields = 12; - break; - } - - WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(NumberOfFields*8))); + WorldPacket data(SMSG_INIT_WORLD_STATES, (4+4+4+2+(12*8))); data << uint32(mapid); // mapid data << uint32(zoneid); // zone id data << uint32(areaid); // area id, new 2.1.0 size_t countPos = data.wpos(); - data << uint16(NumberOfFields); // count of uint64 blocks + data << uint16(0); // count of uint64 blocks data << uint32(0x8d8) << uint32(0x0); // 1 data << uint32(0x8d7) << uint32(0x0); // 2 data << uint32(0x8d6) << uint32(0x0); // 3 @@ -9711,8 +9628,6 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) bf->FillInitialWorldStates(data); break; } - else - data.put<uint16>(countPos, 12); // No break here, intended. default: data << uint32(0x914) << uint32(0x0); // 7 @@ -9721,6 +9636,10 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) data << uint32(0x915) << uint32(0x0); // 10 break; } + + uint16 length = (data.wpos() - countPos) / 8; + data.put<uint16>(countPos, length); + GetSession()->SendPacket(&data); SendBGWeekendWorldStates(); SendBattlefieldWorldStates(); |