mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/PacketIO: Automatically set field count in SMSG_INIT_WORLD_STATES instead of manual switch.
This commit is contained in:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user